PHP - 二维数组

时间:2014-05-08 13:49:15

标签: php multidimensional-array

我对PHP很陌生,而且我很难理解我应该如何做出这样的事情:

Array
(
    [name] => Array
        (
            [0] => Bob
            [1] => Tom
            [2] => Ryan
            [3] => Lisa
            [4] => Peter
        )
    [age] => Array
        (
            [0] => 23
            [1] => 33
            [2] => 43
            [3] => 33
            [4] => 29
        )
)

进入这种阵列:

   Array
    (
        [person] => Array
            (
               [name] => Bob
               [age] => 23
            )
        [person] => Array
            (
               [name] => Tom
               [age] => 33
            )
    )

所以我不能拥有一个人的钥匙,而不是姓名和年龄钥匙。并将名称和年龄相同的索引放入此人员密钥中。我将如何实现这一目标?

感谢。

4 个答案:

答案 0 :(得分:1)

数组中不可能有多个person键,因为键必须是唯一的。

试试:

$input = [
    'name' => ['Bob', 'Tom', 'Ryan', 'Lisa', 'Peter'],
    'age'  => [23, 33, 43, 33, 29],
];

$output = array_map(function($name, $age) {
    return ['name' => $name, 'age' => $age];
}, $input['name'], $input['age']);

var_dump($output);

输出:

array (size=5)
  0 => 
    array (size=2)
      'name' => string 'Bob' (length=3)
      'age' => int 23
  1 => 
    array (size=2)
      'name' => string 'Tom' (length=3)
      'age' => int 33
  2 => 
    array (size=2)
      'name' => string 'Ryan' (length=4)
      'age' => int 43
  3 => 
    array (size=2)
      'name' => string 'Lisa' (length=4)
      'age' => int 33
  4 => 
    array (size=2)
      'name' => string 'Peter' (length=5)
      'age' => int 29

答案 1 :(得分:1)

最简单的方法是:

// Create a main array for the 'people' to be stored in
$people = array();

// Create a person
$bob = array('name' => 'Bob', 'age' => 23);
// Add that person into the 'people' array
$people[] = $bob;

// Repeat as many times a necessary
$tom = array('name' => 'Tom', 'age' => 33);
$people[] = $tom;

$ryan = array('name' => 'Ryan', 'age' => 43);
$people[] = $ryan;

要查看输出:

var_dump($people);

应该产生类似的东西:

array(3) {
  [0]=>
  array(2) {
    ["name"]=>
    string(3) "Bob"
    ["age"]=>
    int(23)
  }
  [1]=>
  array(2) {
    ["name"]=>
    string(3) "Tom"
    ["age"]=>
    int(33)
  }
  [2]=>
  array(2) {
    ["name"]=>
    string(4) "Ryan"
    ["age"]=>
    int(43)
  }
}

这是因为您可以自动将项目附加到数组的末尾,而无需指定要插入它们的键。这就是我们用线条做的事情:

$people[] = $bob;

基本上说,将变量'$ bob'添加到数组中的下一个可用插槽。由于数组最初是空的,恰好是'0'键,依此类推。

答案 2 :(得分:0)

根据定义,密钥必须是唯一的。您可以做的是,创建一个名为$persons的数组,其中包含以下数据:

Array (
    [1] => Array (
               [name] => Bob
               [age] => 23
           )
    [2] => Array (
               [name] => Tom
               [age] => 33
           )
    ...
)

您可以按照以下方式执行此操作:

$persons = Array();

for($i = 0; $i < sizeof($arr["name"]); $i++) {
    $persons[$i]["name"] = $arr["name"][$i];
    $persons[$i]["age"] = $arr["age"][$i];
}

示例输出:

Array
(
    [0] => Array
        (
            [name] => Bob
            [age] => 23
        )

    [1] => Array
        (
            [name] => Tom
            [age] => 33
        )

    [2] => Array
        (
            [name] => Ryan
            [age] => 43
        )

    ...    
)

答案 3 :(得分:0)

$array=new Array();

$array[]=array('name'=>'Jhon Doe','age'=>23]

依旧为您想要存储的每个人。