我有一个以下格式的数组
Array
(
[title] => Array
(
[0] => Ram
[1] => ramesh
[2] => john
[3] => mahesh
)
[neighborhood] => Array
(
[0] => delhi
[1] => mumbai
[2] => odisha
[3] => banglore
)
[phone_no] => Array
(
[0] => 9438648-4256
[1] => 9438333-3390
[2] => 9438771-0888
[3] => 9438504-7000
)
)
但我希望采用以下格式
Array
(
[0] => Array
(
[title] => Ram
[neighborhood] => delhi
[phone_no] => 9438648-4256
)
[1] => Array
(
[title] => Ramesh
[neighborhood] => mumbai
[phone_no] => 9438333-3390
)
[2] => Array
(
[title] => john
[neighborhood] => odisha
[phone_no] => 9438771-0888
)
[3] => Array
(
[title] => mahesh
[neighborhood] => banglore
[phone_no] => 9438504-7000
)
}
我想在php中使用上述格式的数组。非常感谢帮助。 提前致谢
答案 0 :(得分:1)
$arr = array(
"title" => array("t1","t2","t3","t4"),
"neighborhood" => array("n1","n2","n3","n4"),
"phone_no" => array("p1","p2","p3","p4"),
);
$keys = array_keys($arr);
$child_len = count($arr[ $keys[0] ]);
$returnArr = array();
for ($i=0; $i < $child_len; $i++) {
$returnArr[$i] = array();
foreach ($keys as $key) {
$returnArr[$i][$key] = $arr[$key][$i];
}
}
var_dump($returnArr);
不是最有效的,但会对你有用
out就像
[0]=>
array(3) {
["title"]=>
string(2) "t1"
["neighborhood"]=>
string(2) "n1"
["phone_no"]=>
string(2) "p1"
}
[1]=>
array(3) {
["title"]=>
string(2) "t2"
["neighborhood"]=>
string(2) "n2"
["phone_no"]=>
string(2) "p2"
}
[2]=>
array(3) {
["title"]=>
string(2) "t3"
["neighborhood"]=>
string(2) "n3"
["phone_no"]=>
string(2) "p3"
}
[3]=>
array(3) {
["title"]=>
string(2) "t4"
["neighborhood"]=>
string(2) "n4"
["phone_no"]=>
string(2) "p4"
}
答案 1 :(得分:0)
array_combine()
和array_column()
为此任务制作明确的代码。 for
循环将迭代多维数组中的每一列。然后使用array_combine()
简单地将数组键与列值配对。
代码:(Demo)
$array=[
'title'=>['Ram','ramesh','john','mahesh'],
'neighborhood'=>['delhi','mumbai','odisha','banglore'],
'phone_no'=>['9438648-4256','9438333-3390','9438771-0888','9438504-7000']
];
$keys=array_keys($array); // cache the array keys
$columns=sizeof($array['title']); // cache the number of columns to iterate
for($c=0; $c<$columns; ++$c){
$result[]=array_combine($keys,array_column($array,$c));
}
var_export($result);
输出:
array (
0 =>
array (
'title' => 'Ram',
'neighborhood' => 'delhi',
'phone_no' => '9438648-4256',
),
1 =>
array (
'title' => 'ramesh',
'neighborhood' => 'mumbai',
'phone_no' => '9438333-3390',
),
2 =>
array (
'title' => 'john',
'neighborhood' => 'odisha',
'phone_no' => '9438771-0888',
),
3 =>
array (
'title' => 'mahesh',
'neighborhood' => 'banglore',
'phone_no' => '9438504-7000',
),
)
或者,你可以像这样使用foreach
循环:
$keys=array_keys($array); // cache the array keys
foreach($array['title'] as $i=>$v){
$result[]=array_combine($keys,array_column($array,$i));
}
$v
已声明但未使用,因此可以声明$i
。