因此,如果有一个多维数组,如:
从这里得到它(作为演示):PHP. Loop through an array and get items with attributes in common
$data
Array
(
[0] => stdClass Object
(
[term_id] => 3
[name] => Comercial
)
[1] => stdClass Object
(
[term_id] => 4
[name] => Escolar
)
[2] => stdClass Object
(
[term_id] => 5
[name] => Kinder
)
[3] => stdClass Object
(
[term_id] => 6
[name] => Primaria
)
[4] => stdClass Object
(
[term_id] => 7
[name] => Secundaria
)
[5] => stdClass Object
(
[term_id] => 1
[name] => Uncategorized
)
)
拥有0,1,2,3,4,5 stdClass Object
s,如何动态为每个std Object
创建单独的数组。
我的意思是该函数应该能够创建$varX
数组,其中X是stdObject的数组编号,自动...
$var0 = $data[0];
$var1 = $data[1];
等等,由$data
第一级数组计数确定。
修改 我被带走了,忘了提到最重要的问题:
拥有$var0
,$var1
...非常重要,因为以后可以单独使用全部或每个。
所以
每个$varX
都需要与$varX
的其余部分共同访问或单独访问。
$count = count($data); //6
foreach ($data as $key => $value)
{
$var.$key = $value;
}
好的,该功能部分起作用,因为从那里我不知道如何让它自动添加$val1
,$val2
...到(ex :) array_intersect($val1,$val2,$val3...
答案 0 :(得分:2)
最简单的方法是使用extract
。
extract($data, EXTR_PREFIX_ALL, 'var');
话虽如此,它会在前缀后添加下划线(_
)(例如var_0
)。
<强>更新强>
关于您的修改,您只需使用call_user_func_array
致电array_intersect
即可。不需要变量。
call_user_func_array('array_intersect', $data);
答案 1 :(得分:0)
您可以将每个对象转换为数组。
foreach ($data AS $key => $datum)
{
$data[$key] = (array) $datum;
}
供您更新:
foreach ($data AS $key => $datum)
{
$newkey = 'var' . $key; // we want the variable to be called "var" plus the number
$$newkey = (array) $datum; // Make it an array
$data[$key] = $$newkey; // And update the $data array to contain the array
}
您现在拥有$var0
,$var1
等,并且还可以将其作为$data
中的集合进行访问,并且它们都是一个数组。
答案 2 :(得分:0)
foreach ($data as $key => $obj)
{
$key = 'var'.$key;
$$key = $obj;
}