【问题标题】:array_keys not working in laravelarray_keys 在 laravel 中不起作用
【发布时间】:2017-07-12 09:16:13
【问题描述】:

我想返回一个包含键的数组:

<?php
if(isset($values[0]->Content)):
$jarray= json_decode($values[0]->Content);
print_r(array_keys($jarray));
exit;
endif;
?>

$jarray的输出:

stdClass Object
(
    [_token] => QjyTAyDDUeadYvO0qj0gAZyK7OVyudSsY7Sq8Hhp
    [datefrom] => 2017-07-07
    [dateto] => 2017-07-31
    [Productivity] => test1
    [Productivityrating] => 2
    [Technical_Skills] => test2
    [Technical_Skillsrating] => 3
    [Work_Consistency] => test3
    [Work_Consistencyrating] => 4
    [Presentation_skills] => test4
    [Presentation_skillsrating] => 5
    [test] => test5
    [testrating] => 3
    [cycle_id] => 1
    [save] => proceed
)

我想返回一个包含键的数组,所以我尝试了

array_keys($jarray)

但它给出了一个类似

的错误

array_keys() 期望参数 1 是数组,给定对象(查看: 我的路)

预期输出:

Array
(
    [0] =>_token
    [1] => datefrom
    [2] =>_dateto
    [3] => Productivity
    [4] =>Productivityrating
    [5] => Work_Consistency
    [6] =>_Work_Consistencyrating

)etc

任何帮助将不胜感激。

【问题讨论】:

  • 它不是一个数组,它是一个对象。
  • 因为$jarray 是一个对象
  • 尝试$jarray= (array) $jarray;,将对象类型转换为数组

标签: php mysql laravel


【解决方案1】:

json_decode() 默认返回一个解码为对象的 json 字符串(这就是出错的原因)。要将你的 json 解码成一个数组,你应该使用它,第二个参数等于 true,如下所示:

$jarray = json_decode($values[0]->Content, true);

【讨论】:

    【解决方案2】:

    由于您标记为 Laravel,我建议您使用 Laravel 的 Key 方法,该方法返回所有集合的键

    $keys = $collection->keys();
    
    $keys->all();
    
    // ['prod-100', 'prod-200']
    

    参考:Laravel Docs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-22
      • 2014-04-08
      • 2017-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-11
      相关资源
      最近更新 更多