将两个平面数组中的数据合并为成对值的二维数组,然后进行 json 编码

问题描述 投票:0回答:3

我有一个像这样的数组:

array(5) { 
[0]=> array(1) 
  [0]=> int(1)       

[1]=> array(1)  
  [0]=> int(2) 

[2]=> array(1)  
  [0]=> int(3) 

[3]=> array(1)  
  [0]=> int(4)

[4]=> array(1)   
  [0]=> int(5)
   }

如何将其分成 5 个独立的数组? (实际上是将数组按其长度划分)

这是我的代码:

$temp = array();
function toArr(){
return func_get_args();
}
//{('a',1),('b',2),('c',3),('d',4),('e',5)}
$a = array ('a','b','c','d','e');
$b = array(1,2,3,4,5);
$c = array_map ('toArr',$a,$b);

$collection1 = array_slice($c, 0, 1, true);
$collection2 = array_slice($c, 1, 1, true);
$collection3 = array_slice($c, 2, 1, true);
$collection4 = array_slice($c, 3, 1, true);
$collection5 = array_slice($c, 4, 1, true);
$temp[] = $collection1;
$temp[] = $collection2;
$temp[] = $collection3;
$temp[] = $collection4;
$temp[] = $collection5;
$jsondata = json_encode($temp); 
      echo $jsondata;

这是输出:

[[["a",1]],{"1":["b",2]},{"2":["c",3]},{"3":["d",4]},{"4":["e",5]}]

我想要这样的东西: [["a",1],["b",2],["c",3],["d",4],["e",5]]

php arrays
3个回答
2
投票

不确定您想要实现什么,但您可以使用循环并访问每个数组,在本例中作为变量

$a
。阅读 http://php.net/manual/en/control-structs.foreach.php

foreach($arr as $a) {
    //do what you want with $a
    print_r($a);
}

0
投票
$array =
    array(  
         '0' => array( '0' => 1 )
        ,'1' => array( '0' => 2 ) 
        ,'2' => array( '0' => 3 ) 
        ,'3' => array( '0' => 4 )
        ,'4' => array( '0' => 5 )
   );

foreach( $array as $key => $value )
{
    /*
     *  Variable variables
     */
    ${'array' .$key} = $value;
}

var_dump( $array0 );
var_dump( $array1 );
var_dump( $array2 );
var_dump( $array3 );
var_dump( $array4 );

结果

array (size=1)
  0 => int 1

array (size=1)
  0 => int 2

array (size=1)
  0 => int 3

array (size=1)
  0 => int 4

array (size=1)
  0 => int 5

0
投票

将两个数组映射为每对的子数组,然后对结果进行 json 编码。 演示

$a = ['a', 'b', 'c', 'd', 'e'];
$b = [1, 2, 3, 4, 5];

echo json_encode(array_map(null, $a, $b));
# [["a",1],["b",2],["c",3],["d",4],["e",5]]
© www.soinside.com 2019 - 2024. All rights reserved.