如何从对象创建可用的数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从对象创建可用的数组相关的知识,希望对你有一定的参考价值。

我有一个使用loadRow()从Joomla中的db查询返回的JSON数组。 我们正在使用自定义字段来处理一些奇特的页面内容。

我需要来自此单个记录的文本/值对,在不同的可用数组中。

我试过爆炸,array_map,许多不同的操作,但我正在努力与正确的代码组合。

这就是对象的样子。

Array ( [0] =>   
    {"options":  
        {"options0":  
            {"name":"soph","value":"School of Public Health"},  
        "options1":  
            {"name":"son","value":"School of Nursing"},  
        "options2":  
            {"name":"sohp","value":"School of Health Professions"}  
        }
    }
)

我需要什么,更像是这样的:

Array (
    [0] => {"name":"soph","value":"School of Public Health"},  
    [1] => {"name":"son","value":"School of Nursing"},  
    [2] => {"name":"sohp","value":"School of Health Professions"}
)
答案

看起来你将它作为JSON数据存储在数据库中。这样的事情应该有效:

$row = json_decode($arr[0], true)['options'];
$optionList = [];
foreach($row as $option => $options)
{
   array_push($optionList, [
      'name' => $options['name'],
      'value' => $options['value']
   ]);
}

将您的新数据放入$optionList

另一答案

您的问题对您的需求有点模糊。 我认为那是因为你不知道要问什么问题。

如果我是你,我相信这就是我想要的。 解码数组并使用数组列展平数组并生成“名称”,键和“值”值。

这样你可以使用数组作为下面代码中的回声线。

$collegeparams = '{"options":  
        {"options0":  
            {"name":"soph","value":"School of Public Health"},  
        "options1":  
            {"name":"son","value":"School of Nursing"},  
        "options2":  
            {"name":"sohp","value":"School of Health Professions"}  
        }
    }';

$arr = array_column(json_decode($collegeparams[0], true)['options'], "value", "name");
var_dump($arr);

echo $arr['sohp'];

以上产出:

array(3) {
  ["soph"]=>
  string(23) "School of Public Health"
  ["son"]=>
  string(17) "School of Nursing"
  ["sohp"]=>
  string(28) "School of Health Professions"
}
School of Health Professions

https://3v4l.org/3MdIN

以上是关于如何从对象创建可用的数组的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法使用相同的布局动态创建片段并向它们显示数据?

从活动接收意图后如何创建片段?

为什么我不能在此片段中生成唯一对象数组?

如何创建片段以重复变量编号中的代码行

如何在UL中迭代使用appendChild和片段LI?

如何将 BVH 节点对象转换为简单数组?