繁体   English   中英

PHP - 二维数组

[英]PHP - Two dimensional 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
            )
    )

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

谢谢。

因为键必须是唯一的,所以不可能在阵列中有许多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

最简单的方法是:

// 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'键,依此类推。

根据定义,密钥必须是唯一的。 您可以做的是,使用以下数据创建一个名为$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
        )

    ...    
)

喜欢

$array=new Array();

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

对于你想要存储的每个人来说等等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM