在PHP中以特定格式排列多维数组

3
我有一个以下格式的数组:
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中按照上述格式创建数组。非常感谢您的帮助。 提前致谢。

欢迎。你尝试过什么了吗?你在哪里失败了?我们能看到你的代码吗? - brombeer
我是php的新手,不知道该怎么做。 - prabhat kumar jena
@prabhatkumarjena 请尝试重新表述您的问题,展示一些您已经尝试过的例子和代码。这将使我们更容易提供帮助。 - d-_-b
2个回答

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);

虽然不是最有效的方法,但对你有用。

退出将会像这样。

[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"
  }

0

array_combine()array_column() 可以为此任务提供清晰的代码。 for 循环将遍历多维数组中的每一列。 然后,使用 array_combine() 将数组键与列值简单配对。

代码:(演示)

$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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接