PHP - 操作数组

时间:2016-10-31 10:40:35

标签: php arrays

我想操纵一个数组,我有点坚持如何继续,希望我可以指向正确的方向

这是我目前拥有的阵列:

    array(10) { 
["gdlr-room-id"]=> string(4) "3595" 
["gdlr-check-in"]=> string(10) "2016-10-31"
["gdlr-night"]=> string(1) "1" 
["gdlr-check-out"]=> string(10) "2016-11-01" 
["gdlr-room-number"]=> string(1) "1" 
["gdlr-adult-number"]=> string(1) "1" 
["gdlr-children-number"]=> string(1) "1" 
["gdlr-resident"]=> string(8) "resident" 
["service"]=> string(19) "5061,5060" 
["service-amount"]=> string(7) "1,1" }

这就是我想要实现的目标:

 array(10) { 
["gdlr-room-id"]=> array(1) { [0]=> string(4) "3595" }
["gdlr-check-in"]=> string(10) "2016-10-31"
["gdlr-night"]=> string(1) "1" 
["gdlr-check-out"]=> string(10) "2016-11-01" 
["gdlr-room-number"]=> string(1) "1"
["gdlr-adult-number"]=> array(1) { [0]=> string(1) "1" } 
["gdlr-children-number"]=> array(1) { [0]=> string(1) "1" }
["gdlr-resident"]=> string(8) "resident" 
["service"]=> array(2) { [0]=> string(4) "5061" [1]=> string(4) "5060" } 
["service-amount"]=> array(2) { [0]=> string(1) "1" [1]=> string(1) "1" } 
} 

如果我可以解释一下:如果我们以 gdlr-room-id 键为例:我当前的数组表示一个键值对,如["gdlr-room-id"]=> string(4) "3595"所示{期望的结果是值在另一个数组中,如下所示:["gdlr-room-id"]=> array(1) { [0]=> string(4) "3595" }。这不是针对所有key =>值对,而是仅选择少数几个,因为一些将保留,例如它们。 ["gdlr-check-in"]=> string(10) "2016-10-31"可以,因为它是

总之,我如何在数组中取一些值(就像我当前的那样)并将一些值放在另一个数组中,如上所述?虽然我们正在讨论这个问题,但我有何建议如何将此["service"]=> string(19) "5061,5060"转变为["service"]=> array(2) { [0]=> string(4) "5061" [1]=> string(4) "5060" }?感谢

2 个答案:

答案 0 :(得分:3)

如果您有一个键列表,其值应扩展为数组,例如

P[x]

并且逗号分隔多个值,您可以执行类似

的操作
A[0] + A[1] + ... + A[x]

这将检查原始数组的每个键值对,如果键位于$ expand_keys数组中,则将其值分解为数组。

答案 1 :(得分:2)

您可以遍历元素并将值分解为新数组,如下所示:

<?php
$array = array("gdlr-room-id" => "3595",  
          "service" => "5061,5060", 
          "service-amount" => "1,1"
          );

$copied_array = array();

foreach( $array as $key => $value ){
    $copied_array[$key] = explode(',', $value);
}

print_r($copied_array);