Php 警告:json_decode()要求参数1为字符串,数组给定

Php 警告:json_decode()要求参数1为字符串,数组给定,php,Php,代码如下: <? $fields = json_decode($this->item->extra_fields); $allowed_fields= array('3','5'); if ( $fields != NULL ) { foreach ( $fields as $field ) { if ( in_array($field->id, $allowed_fields ) && $field->value != NULL) {

代码如下:

<? $fields = json_decode($this->item->extra_fields); 
$allowed_fields= array('3','5');  
if ( $fields != NULL ) { 
foreach ( $fields as $field ) { 
if ( in_array($field->id, $allowed_fields ) && $field->value != NULL) {  
?>
<span class = "list_for<? echo $field->id; ?>">
<? echo $field->value;?></span><? }   } }?>
在PHP从5.3升级到5.4之前,一切正常

我不是开发人员,所以请尽量不要太专业。提前谢谢

如前所述,这样做

$fields = json_decode($this->item->extra_fields, true); 
如果为TRUE,则返回的对象将转换为关联数组

$fields将是一个数组,
foreach()
将工作

如前所述,按如下方式操作

$fields = json_decode($this->item->extra_fields, true); 
如果为TRUE,则返回的对象将转换为关联数组

$fields将是一个数组,
foreach()
将工作

如前所述,按如下方式操作

$fields = json_decode($this->item->extra_fields, true); 
如果为TRUE,则返回的对象将转换为关联数组

$fields将是一个数组,
foreach()
将工作

如前所述,按如下方式操作

$fields = json_decode($this->item->extra_fields, true); 
如果为TRUE,则返回的对象将转换为关联数组


$fields将是一个数组,
foreach()
将起作用

您无法检查它的
是否为空

<? $fields = json_decode($this->item->extra_fields); 
$allowed_fields= array('3','5');  
if($fields) {
foreach ( $fields as $field ) { 
if ( in_array($field->id, $allowed_fields ) && $field->value != NULL) {  
?>
<span class = "list_for<? echo $field->id; ?>">
<? echo $field->value;?></span><? }   } }?>


您无法检查其
是否为NULL

<? $fields = json_decode($this->item->extra_fields); 
$allowed_fields= array('3','5');  
if($fields) {
foreach ( $fields as $field ) { 
if ( in_array($field->id, $allowed_fields ) && $field->value != NULL) {  
?>
<span class = "list_for<? echo $field->id; ?>">
<? echo $field->value;?></span><? }   } }?>


您无法检查其
是否为NULL

<? $fields = json_decode($this->item->extra_fields); 
$allowed_fields= array('3','5');  
if($fields) {
foreach ( $fields as $field ) { 
if ( in_array($field->id, $allowed_fields ) && $field->value != NULL) {  
?>
<span class = "list_for<? echo $field->id; ?>">
<? echo $field->value;?></span><? }   } }?>


您无法检查其
是否为NULL

<? $fields = json_decode($this->item->extra_fields); 
$allowed_fields= array('3','5');  
if($fields) {
foreach ( $fields as $field ) { 
if ( in_array($field->id, $allowed_fields ) && $field->value != NULL) {  
?>
<span class = "list_for<? echo $field->id; ?>">
<? echo $field->value;?></span><? }   } }?>






请注意,json_decode接受字符串,根据上面的错误,您试图将数组传递给它,因此如果您需要迭代字段数组,您可能希望忽略json_decode,因为您似乎已经有了数组

json_encode接受数组,但它会给出一个字符串,所以当您尝试在sting上迭代时,它会给您一个警告

因此,请尝试下面的代码

<? $fields = $this->item->extra_fields; 
$allowed_fields= array('3','5');  
if ( $fields ) { 
foreach ( $fields as $field ) { 
if ( in_array($field->id, $allowed_fields ) && $field->value != NULL) {  
?>
<span class = "list_for<? echo $field->id; ?>">
<? echo $field->value;?></span><? }   } }?>


请注意,json_decode接受字符串,根据上面的错误,您试图将数组传递给它,因此如果您需要迭代字段数组,您可能希望忽略json_decode,因为您似乎已经有了数组

json_encode接受数组,但它会给出一个字符串,所以当您尝试在sting上迭代时,它会给您一个警告

因此,请尝试下面的代码

<? $fields = $this->item->extra_fields; 
$allowed_fields= array('3','5');  
if ( $fields ) { 
foreach ( $fields as $field ) { 
if ( in_array($field->id, $allowed_fields ) && $field->value != NULL) {  
?>
<span class = "list_for<? echo $field->id; ?>">
<? echo $field->value;?></span><? }   } }?>


请注意,json_decode接受字符串,根据上面的错误,您试图将数组传递给它,因此如果您需要迭代字段数组,您可能希望忽略json_decode,因为您似乎已经有了数组

json_encode接受数组,但它会给出一个字符串,所以当您尝试在sting上迭代时,它会给您一个警告

因此,请尝试下面的代码

<? $fields = $this->item->extra_fields; 
$allowed_fields= array('3','5');  
if ( $fields ) { 
foreach ( $fields as $field ) { 
if ( in_array($field->id, $allowed_fields ) && $field->value != NULL) {  
?>
<span class = "list_for<? echo $field->id; ?>">
<? echo $field->value;?></span><? }   } }?>


请注意,json_decode接受字符串,根据上面的错误,您试图将数组传递给它,因此如果您需要迭代字段数组,您可能希望忽略json_decode,因为您似乎已经有了数组

json_encode接受数组,但它会给出一个字符串,所以当您尝试在sting上迭代时,它会给您一个警告

因此,请尝试下面的代码

<? $fields = $this->item->extra_fields; 
$allowed_fields= array('3','5');  
if ( $fields ) { 
foreach ( $fields as $field ) { 
if ( in_array($field->id, $allowed_fields ) && $field->value != NULL) {  
?>
<span class = "list_for<? echo $field->id; ?>">
<? echo $field->value;?></span><? }   } }?>


测试这个。在发送到PHP之前,将jsonObj更改为字符串

jsonObj{..}
jsonObj2=JSON.stringify(jsonObj);
$.ajax({
   类型:“POST”,
   url:“Methods.php”,
   数据:{'Json_data':jsonObj2},
  成功:功能(响应){
console.log(“结果:+响应”);
}
});

测试这个。在发送到PHP之前,将jsonObj更改为字符串

jsonObj{..}
jsonObj2=JSON.stringify(jsonObj);
$.ajax({
   类型:“POST”,
   url:“Methods.php”,
   数据:{'Json_data':jsonObj2},
  成功:功能(响应){
console.log(“结果:+响应”);
}
});

测试这个。在发送到PHP之前,将jsonObj更改为字符串

jsonObj{..}
jsonObj2=JSON.stringify(jsonObj);
$.ajax({
   类型:“POST”,
   url:“Methods.php”,
   数据:{'Json_data':jsonObj2},
  成功:功能(响应){
console.log(“结果:+响应”);
}
});

测试这个。在发送到PHP之前,将jsonObj更改为字符串

jsonObj{..}
jsonObj2=JSON.stringify(jsonObj);
$.ajax({
   类型:“POST”,
   url:“Methods.php”,
   数据:{'Json_data':jsonObj2},
  成功:功能(响应){
console.log(“结果:+响应”);
}
});


它在错误消息中已经说,用json字符串馈送它,但是你用数组
$fields
馈送它不是数组。它在错误消息中已经说,用json字符串馈送它,但是你用数组
$fields
馈送它不是数组。它在错误消息中已经说,用json字符串馈送它,但是你给它输入了一个数组
$fields
不是数组。它在错误消息中已经说,给它输入一个json字符串,但是你给它输入了一个数组
$fields
不是数组。我正要回答这个问题,回答很好,并且应该保持其余代码正常工作在他使用字段作为对象的foreach中,如果更改为assoc数组,他将不得不重写它。我添加了真位,但我仍然得到原始错误消息。“$this->item->extra_fields”中到底有什么内容,当执行var_dump($fields)?我正要自己回答这个问题,回答得很好,应该让剩下的代码继续工作。在他使用字段作为对象的foreach中,如果更改为assoc数组,他将不得不重写它。我添加了真位,但我仍然得到原始错误消息。“$this->item->extra_fields”中到底是什么,执行var_dump($fields);,会得到什么?我正要自己回答这个问题,回答得很好,应该让剩下的代码继续工作。在他使用字段作为对象的foreach中,如果更改为assoc数组,他将不得不重写它。我添加了真位,但我仍然得到原始错误消息。“$this->item->extra_fields”中到底是什么,执行var_dump($fields);,会得到什么?就要开始了