Php 解码的JSON不';t在usort()中被识别为数组
我有以下代码:-Php 解码的JSON不';t在usort()中被识别为数组,php,arrays,json,Php,Arrays,Json,我有以下代码:- $category = json_decode($row['product_cat'], true); usort($category, "cmp"); 它会产生以下错误消息: PHP警告:usort()要求参数1为数组,在 /第22行的home/user/public_html/cron/test.php 为什么usort()参数中的$category未被识别为数组?事实上,这是一个从json解码的数组。有人知道为什么会出现此错误消息吗?多谢各位 以下是我的完整代码: f
$category = json_decode($row['product_cat'], true);
usort($category, "cmp");
它会产生以下错误消息:
PHP警告:usort()要求参数1为数组,在
/第22行的home/user/public_html/cron/test.php
为什么usort()
参数中的$category
未被识别为数组?事实上,这是一个从json解码的数组。有人知道为什么会出现此错误消息吗?多谢各位
以下是我的完整代码:
function cmp($a, $b) {
return strcmp($a['id'], $b['id']);
}
while ($row = $result->fetch_assoc()) {
$category = json_decode($row['product_cat'], true);
usort($category, "cmp");
echo '<pre>';
print_r($category);
echo '</pre>';
}
函数cmp($a,$b){
返回strcmp($a['id',$b['id');
}
而($row=$result->fetch_assoc()){
$category=json_decode($row['product_cat',true);
usort(类别“cmp”);
回声';
印刷品(类别);
回声';
}
在usort调用之前,需要输入if条件,因为有时输入中没有正确的json,所以json解码返回空值
while ($row = $result->fetch_assoc()) {
$category = json_decode($row['product_cat'], true);
// check decode give array properly
if(is_array($category) && count($category)>1){
usort($category, "cmp");
}
echo '<pre>'; print_r($category); echo '</pre>';
}
函数cmp($a,$b){
返回strcmp($a['id',$b['id');
}
而($row=$result->fetch_assoc()){
$category=json_decode($row['product_cat',true);
如果(isset($category)&&!empty($category)){
usort(类别“cmp”);
}
回声';
印刷品(类别);
回声';
}
您显示的json
数据似乎是正确的,但由于我们无法确保在循环期间输入的所有json都是正确的,因此我们必须以一种不会发生错误的方式更改代码。请执行以下操作:-
while($row=$result->fetch_assoc()){
$category=json_decode($row['product_cat',true);
//检查是否正确解码给定数组
if(is_数组($category)&&count($category)>1){
usort(类别“cmp”);
}
回显“”;打印($category);回显“”;
}
注:-
我不会直接比较它将
null
,因为如果假设数组正确,但其中只有一个值,那么usort($category,“cmp”)代码>调用将不必要地发生(因为没有要排序的内容)。能否显示var\u dump($row['product\u cat'))的输出代码>(我认为现在不是json,这就是为什么会出现错误)。我认为它是一个包含单个或逗号分隔id的字符串's@AlivetoDie:string(30)“[{”id:“1”,“value:“Console”}]”string(67)“[{”id:“18”,“value:“Games”},{”id:“36”,“value:“Nintendo Switch”}]”这是var\u dump
这似乎正确。好的,这样做:-while($row=$result->fetch_assoc()){$category=json_decode($row['product_cat'],true);if(is_array($category)&&count($category)>1){usort($category,“cmp”);}echo“”;print_r($category);echo“”}
@SaintRobson似乎有一段时间json不再有效,所以json_decode
给出了null,而hense-usort提供了错误。
while ($row = $result->fetch_assoc()) {
$category = json_decode($row['product_cat'], true);
// check decode give array properly
if(is_array($category) && count($category)>1){
usort($category, "cmp");
}
echo '<pre>'; print_r($category); echo '</pre>';
}