【问题标题】:json array to standard arrayjson数组到标准数组
【发布时间】:2013-03-23 03:24:51
【问题描述】:

让我解释一下我的问题,我应该在显示联系表单之前调用一个网络服务,网络服务的返回是:

$items = json_decode('[{"location":[{"building":["Building1"],"name":"Location1"}],"name":"Organization1"},{"location":[{"building":["Building2"],"name":"location2"}],"name":"Organisation2"},{"location":[{"building":["Building3"],"name":"Location3"}],"name":"Organization3"}]');

在这里,我使用以下代码仅提取了组织、位置和建筑物:

foreach( $items as $each ){
    echo $each->location[0]->building[0];
    echo $each->location[0]->name;
    echo $each->name;
}

我想以这种格式获取不同数组中的组织、建筑物和位置的值:

("building1", "building2", "building3")
("organisation1", "organisation2", "organisation3")
("location1", "location2", "location3")

【问题讨论】:

  • 那么你是做什么的一个组织有多个位置?我问是因为为 JSON 选择的格式特别允许每个组织有多个位置。或者您不打算在数字键上交叉引用?
  • 嗯,我真的很想做这样的事情,你已经读懂了我的想法,你有什么想法吗
  • @user2201395:当您可以将它们作为返回的每个项目的单个结构访问时,为什么要从分离的数组中访问它们?那没有任何意义。如果您只想将它​​们作为数组访问,那么您最好将 JSON 转换为像 $items = json_decode($theJsonString, true) 这样的数组,然后您可以像 $items[0]['location'][0]['name'] 那样访问

标签: php arrays json forms decode


【解决方案1】:

获取现有代码并稍作修改;

$buildings = array( );
$organisations = array( );
$locations = array( );
foreach( $items as $each ){
    $buildings[] = $each->location[0]->building[0];
    $organisations[] = $each->location[0]->name;
    $locations[] = $each->name;
}

结果现在位于顶部定义的变量中。 [] 只是告诉它在数组末尾附加一个值。

【讨论】:

  • location[0]->building[0] );组织.push($each->location[0]->name);位置.push($each->name); } 在 var building 行显示一些错误
  • @user2201395 立即尝试。我误以为你在使用 JavaScript。
  • @dave 我已经包含了 echo $buildings;在您的代码末尾,我得到的结果是 ArrayArrayArray ,是否无法打印为 ("building1", "building2", "building3")
  • @user2201395 要在 PHP 中很好地打印数组,您需要使用 print_r(myArray) 而不是 echo myArray
  • @anyone 我如何检索数组值作为下拉菜单中的选项
【解决方案2】:

你是这样做的:

$arrays = array();
$arrays['buildings'] = array(); // buildings
$arrays['organisations'] = array();
$arrays['locations'] = array();
foreach( $items as $each ){
    $arrays['buildings'][] = $each->location[0]->building[0];
    $arrays['organisations'][] = $each->location[0]->name;
    $arrays['locations'][] = $each->name;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    相关资源
    最近更新 更多