繁体   English   中英

从另一个多维数组PHP创建多维数组

[英]Create multi-dimensional array from another multi-dimensional array PHP

可以说我有一个像这样的多维数组:

$results = array(
    0 => array(
        'fruit' => 'apple',
        'colour' => 'green',
        'amount' => 50
    ),
    1 => array(
        'fruit' => 'orange',
        'colour' => 'orange',
        'amount' => 25
    ),
    2 => array(
        'fruit' => 'banana',
        'colour' => 'yellow',
        'amount' => 7
    )
);

我只想使用特定对象创建一个新的多维数组:

$newarray = array(
    0 => array(
        'fruit' => 'apple',
        'amount' => 50
    ),
    1 => array(
        'fruit' => 'orange',
        'amount' => 25
    ),
    2 => array(
        'fruit' => 'banana',
        'amount' => 7
    )
);

我该怎么做? 我读过一些不同的东西,似乎array_maparray_column可能是答案,但我还没有找到适合我情况的示例。

我到目前为止:

$newarray = array();
foreach ($results as $result) {
    if (!empty($result['fruit'])) {
      // create new array here but how do I specify the key => values?
    }
}

如果键是固定的,并且您没有太多键,则这是合适的:

$results = array(
    0 => array(
        'fruit' => 'apple',
        'colour' => 'green',
        'amount' => 50
    ),
    1 => array(
        'fruit' => 'orange',
        'colour' => 'orange',
        'amount' => 25
    ),
    2 => array(
        'fruit' => 'banana',
        'colour' => 'yellow',
        'amount' => 7
    )
);

$new = array();
foreach($results as $value){
    $new[] = array(
        'fruit' => $value['fruit'],
        'amount' => $value['amount']
    );
}
var_dump($new);

得到:

array (size=3)
  0 => 
    array (size=2)
      'fruit' => string 'apple' (length=5)
      'amount' => int 50
  1 => 
    array (size=2)
      'fruit' => string 'orange' (length=6)
      'amount' => int 25
  2 => 
    array (size=2)
      'fruit' => string 'banana' (length=6)
      'amount' => int 7

无论如何,这是您不正确的?

foreach ($results as $key) {
    unset ($results[$key]['colour']);
}

print_r($results);

输出:

Array
(
[0] => Array
    (
        [fruit] => apple
        [amount] => 50
    )

[1] => Array
    (
        [fruit] => orange
        [amount] => 25
    )

[2] => Array
    (
        [fruit] => banana
        [amount] => 7
    )

)

将密钥设置在“ $ keys_to_search”上。 胜过使用unset。

$keys_to_search = ['fruit' => '','colour' => ''];

$results = array(
    0 => array(
        'fruit' => 'apple',
        'colour' => 'green',
        'amount' => 50
    ),
    1 => array(
        'fruit' => 'orange',
        'colour' => 'orange',
        'amount' => 25
    ),
    2 => array(
        'fruit' => 'banana',
        'colour' => 'yellow',
        'amount' => 7
    )
);




foreach($results as $key => $value){
    $result[] = array_intersect_key($value, $keys_to_search);  
}

print_r($result);

暂无
暂无

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

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