更改数组中的索引PHP

时间:2019-02-21 01:49:02

标签: php arrays indexing foreach

大家好,

我受命更改数组中的索引。 这是我的代码:

$file = Storage::get('upload/test.txt');
$lines = explode('\n', $file);
$array = array_map(function($line) {
    return explode(',', $line);
}, $lines);
print_r($array);

输出为:

数组     (         [0] =>数组             (                 [0] =>约翰                 [1] =>男性                 [2] => 20                 [3] => 200                 [4] => 174             )

    [1] => Array
        (
            [0] => joe
            [1] => male
            [2] => 24
            [3] => 157
            [4] => 166
        )

    [2] => Array
        (
            [0] => bea
            [1] => female
            [2] => 18
            [3] => 153
            [4] => 160
        )

    [3] => Array
        (
            [0] => edd
            [1] => male
            [2] => 30
            [3] => 180
            [4] => 180
        )

)

我需要做的是:

数组     (         [0] =>数组             (                 [名称] =>约翰                 [性别] =>男                 [年龄] => 20                 [高度] => 200                 [重量] => 174             )

    [1] => Array
        (
            [name] => joe
            [sex] => male
            [age] => 24
            [height] => 157
            [weight] => 166
        )

    [2] => Array
        (
            [name] => bea
            [sex] => female
            [age] => 18
            [height] => 153
            [weight] => 160
        )

    [3] => Array
        (
            [name] => edd
            [sex] => male
            [age] => 30
            [height] => 180
            [weight] => 180
        )

)

先谢谢! :)

4 个答案:

答案 0 :(得分:1)

您需要一个关联数组。

$newArray = []; // create a new empty array to store your associative arrays.

// Loop through each element in array.
foreach($array as $aPerson) {
  // map each element in array into an associative array.
  $person = [
    "name" => $aPerson[0],
    "sex" => $aPerson[1],
    "age" => $aPerson[2],
    "height" => $aPerson[3],
    "weight" => $aPerson[4]
  ];
  // Add your associative array to your new re-indexed array.
  array_push($newArray, $person);
}

我希望这会有所帮助。

以下内容应以您想要的格式打印数组。

print_r($newArray);

答案 1 :(得分:1)

简单,像这样:

glBegin(GL_TRIANGLES);

    glColor3f(1,0,0);
    glVertex3f(-10,-10,0);

    glColor3f(0,1,0);
    glVertex3f(10,-10,0);

    glColor3f(0,0,1);
    glVertex3f(0,10,0);

glEnd();

输出

$arr =     [
    ['joe','male',24,157,166]
];

 #mind the & pass by refrence
foreach($arr as &$item){
    $item = array_combine(['name','sex','age','height','weight'],$item);
}

print_r($arr);

Sandbox

如果两个数组的大小不同,请注意Array ( [0] => Array ( [name] => joe [sex] => male [age] => 24 [height] => 157 [weight] => 166 ) ) 会爆炸。

您也可以这样做(84字节)

array_combine

相同的输出

Sandbox

答案 2 :(得分:0)

一种可能的解决方案是创建一个新数组,遍历当前数组并添加索引:

$new_array = array();

foreach ($array as $element) {
    $new_array[] = array(
        'name' => $element[0],
        'sex' => $element[1],
        'age' => $element[2],
        'height' => $element[3],
        'weight' => $element[4]
    );

    $i++;
}

答案 3 :(得分:0)

这就是我要如何实现的目标

<?php
$fp = @fopen('upload/test.txt', 'r'); $props = ['name', 'sex', 'age', 'height', 'weight']; $r = [];
if($fp) {
  while(($line = fgets($fp)) !== false) {
    $x = explode(',', $line); $a = [];
    foreach($props as $k => $v){
      $a[$v] = $x[$k];
    }
    $r[] = $a;
  }
  fclose($fp);
}
print_r($r);
?>