将数组分解为数组中的数组

时间:2016-04-02 10:54:55

标签: php arrays

我有~10000个值的数组。

示例:

  $arr = array("Name", "1.00", "87.70", "12.30",     
  "3.30", "3.30", "0.00", "3.50", "2.10", "1.11", "0.10", "14.00",
  "4.80", "0.00", "4.80", "0.00", "0.70", "44.00", "12.00", "85.00", 
  "138.00", "118.00", "0.10", "0.32", "1.00", "9.00", "40.00", "0.05", 
  "0.11", "0.04", "0.17", "0.10", "0.70", "5.00", "0.05", "0.40", 
  "1.00", "0.00", "65.00", "^_^", "Name2", "1.00", 
  "88.00", "12.00", "3.30", "3.30", "0.00", "3.20", "1.92", "1.01", 
  "0.08", "13.00", "4.80", "0.00", "4.80", "0.00", "0.70", "44.00", 
  "12.00", "85.00", "139.00", "118.00", "0.10", "0.32", "1.00", "9.00", 
  "36.00", "0.00", "0.10", "0.04", "0.17", "0.10", "0.70", "7.00", 
  "0.05", "0.40", "1.00", "0.00", "61.00", "^_^",

依旧......

当数组在数组“^ _ ^”中达到值并且在数组中生成数组时,我需要爆炸数组。然后我会将信息输入数据库。

我试图爆炸,预告和爆炸,但没有找到解决此问题的方法。

2 个答案:

答案 0 :(得分:1)

您需要编写自己的函数来执行此操作。这是一个应该解释它的简单示例:

function array_split($arr, $splitBy) {
    $result = [];
    $subArray = [];

    foreach ($arr as $elem) {
        // If an element matches your delimiter,
        // add the current sub-array to the result set and start a new sub-array
        // Else add the element to the sub-array
        if ($elem == $splitBy) {
            $result[] = $subArray;
            $subArray = [];
        } else {
            $subArray[] = $elem;
        }
    }

    // Make sure the last sub-array also gets added to the result set
    $result[] = $subArray;

    return $result;
}

答案 1 :(得分:1)

$result = array_map
(
    function( $row )
    {
        return explode( ',', $row );
    },
    explode( ',^_^,', implode( ',',$arr ) )
);

print_r( $result );

输出:

Array
(
    [0] => Array
        (
            [0] => Name
            [1] => 1.00
            (...)
        )
    [1] => Array
        (
            [0] => Name2
            [1] => 1.00
            (...)
        )
    (...)
)

如果原始数组的最后一个元素不是^_^,则上述代码将起作用。否则你必须以这种方式修改脚本:

explode( ',^_^,', implode( ',', array_slice( $arr, 0, -1 ) ) )
#                               ↑↑↑↑↑↑↑↑↑↑↑↑     ↑↑↑↑↑↑↑↑↑

你传给array_map一个数组,该数组是通过使用','并通过',^ _ ^,'爆炸产生的字符串,然后array_map返回按','爆炸的每个字符串。