Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改php数组格式_Php_Arrays_Associative Array - Fatal编程技术网

更改php数组格式

更改php数组格式,php,arrays,associative-array,Php,Arrays,Associative Array,我有下面提到的数组,我的值总是3的倍数 $xyz = array(array('name'=>'abc'),array("name"=>"snds"),array("name"=>""),array("number"=>"452"),array("number"=>"845120"),array("number" => "84514513200"),array("email" => "ddddf"),array("email" => "dkskns

我有下面提到的数组,我的值总是3的倍数

$xyz = array(array('name'=>'abc'),array("name"=>"snds"),array("name"=>""),array("number"=>"452"),array("number"=>"845120"),array("number" => "84514513200"),array("email" => "ddddf"),array("email" => "dkskns"),array("email" => "kjnksdnkds"));
但是这不是我执行进一步操作的正确格式,所以我想要下面提到的这个数组

$abc = array(array("name"=>"abc","number"=>'452',"email" => "ddddf"),array("name" => "snds","number" =>"845120","email" => "dkskns"),array("name" => "", "number" => "84514513200","email" => "kjnksdnkds"));

注意:数组长度是动态的,但它总是3的倍数。一种可能是使用
%
运算符

foreach
中,值是一个数组,您可以使用它来获取键和第一个数组元素的值

$result = [];
$count = 0;
foreach ($xyz as $value) {
    if ($count%3 === 0) {
        $count = 0;
    }
    $result[$count][array_keys($value)[0]] = reset($value);
    $count++;
}

这将给你:

array(3) {
  [0]=>
  array(3) {
    ["name"]=>
    string(3) "abc"
    ["number"]=>
    string(3) "452"
    ["email"]=>
    string(5) "ddddf"
  }
  [1]=>
  array(3) {
    ["name"]=>
    string(4) "snds"
    ["number"]=>
    string(6) "845120"
    ["email"]=>
    string(6) "dkskns"
  }
  [2]=>
  array(3) {
    ["name"]=>
    string(0) ""
    ["number"]=>
    string(11) "84514513200"
    ["email"]=>
    string(10) "kjnksdnkds"
  }
}
这将有助于:

$result = array_map('array_merge', ...array_chunk($xyz, count($xyz) / 3));

但我也尝试了另一种方法,这也很好,但我认为你的代码比我的更优化。谢谢第四个小鸟,我只试过这样的东西。在第四只鸟回答之前。谢谢@deceze