如何将数组转换为键,值,...数组?

时间:2015-07-30 09:44:04

标签: php arrays associative-array

我有一个数组:

Array
(
    [0] => Item
    [1] => Repaired Wattles
    [2] => Types
    [3] => Non-Wire
    [4] => Estimated Qty
    [5] => 124
    [6] => Actual Qty
    [7] => 124
    [8] => Upload File
    [9] => example.jpg
)

我需要将下一个值添加到上一个值。我需要它看起来像这样

Array
(
    [Item] => Repaired Wattles
    [Types] => Non-Wire
    [Estimated Qty] => 124
    [Actual Qty] => 124
    [Upload File] => example.jpg

)

我有类似的东西:

$array = array(
    foreach($stri as $string) {
        $stri[] => $stri[$val]
    $val = $string + 1;
);

我知道我肯定是错的。但就在这里,我已经陷入困境,并且不知道如何让我的代码按照我的意愿运行。

5 个答案:

答案 0 :(得分:2)

在每个循环中编写简单的for循环并将计数器递增2:

$result = array();
for ($i = 0; $i < count($arr); $i += 2) { // increment counter +2
    if (isset($arr[$i]) && isset($arr[$i+1])) { // to make sure if both indexes exists in array
        $result[$arr[$i]] = $arr[$i+1];
    }
} 

用法示例:

$arr = array('aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff');
// ...
var_dump($result);

array(3) {
  'aaa' =>
  string(3) "bbb"
  'ccc' =>
  string(3) "ddd"
  'eee' =>
  string(3) "fff"
}
$arr = array('aaa', 'bbb', 'ccc', 'ddd', 'eee');
// ...
var_dump($result);

array(2) {
  'aaa' =>
  string(3) "bbb"
  'ccc' =>
  string(3) "ddd"
}

答案 1 :(得分:1)

这应该适合你:

首先将array_chunk()数组放入2.的块中。然后使用array_column()将0列作为键,将第1列作为值。像这样:

$arr = array_column(array_chunk($arr, 2), 1, 0);

Demo

答案 2 :(得分:1)

您可以尝试array_combine以及array_columnarray_chunk

注意:如果数组完全具有偶数个值

,这将起作用
$arr = Array('Item','Repaired Wattles','Types','Non-Wire','Estimated Qty',124,'Actual Qty',124,'Upload File','example.jpg');

$final = array_combine(array_column(array_chunk($arr, 2),0),array_column(array_chunk($arr, 2),1));
print_r($final);

Demo

答案 3 :(得分:1)

使用以下代码

{{1}}

答案 4 :(得分:0)

$a = array(0 => 'Item',
    1 => 'Repaired',
    2 => 'Types',
    3 => 'Non',
    4=> 'Estimated',
    5 => '124',
    6 => 'Actual',
    7 => '124',
    8 => 'Upload',
    9 => 'example'
);

echo "<pre>";
print_r($a);

$a_len = count($a);
$fnl = array();
$i = 0;

while($i<$a_len){
    $fnl[$a[$i]] =  $a[++$i];
    $i++;
}
print_r($fnl);