在mysql_fetch_array数组上使用 urldecode



我一直在尝试将字段从mysql_fetch_array(urlencoded)转换为urldecode,然后再转换为JSON(json_encode)

这是我正在使用的不起作用的内容:输出仍然是 urlencode

$query = "SELECT * FROM table WHERE tableId=$tableId";
$result = mysql_fetch_array(mysql_query($query));
foreach($result as $value) {
    $value = urldecode($value);
}
$jsonOut = array();
$jsonOut[] = $result;
echo (json_encode($jsonOut));

有什么想法吗?

是的....! 您不会使用函数返回的值更新$result$value需要通过引用传递。

foreach($result as &$value) {
    $value = urldecode($value);
}

foreach($result as $i => $value) {
    $result[$i] = urldecode($value);
}

当你这样做时...

foreach($result as $value) {
    $value = urldecode($value);
}

函数的结果在foreach迭代时丢失。 您正在尝试更新存储在$result中的每个值,但这并没有发生。

  • 另请注意,代码仅从查询中获取一行。 我不确定这是否是设计使然。

尝试:

$query = "SELECT * FROM table WHERE tableId=$tableId";
$result = mysql_query($query);
$value = array();
while($row = mysql_fetch_array($result))
$value[] = urldecode($row);
}
$jsonOut = array();
$jsonOut[] = $result;
echo (json_encode($jsonOut));

最新更新