我有~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", "^_^",
依旧......
当数组在数组“^ _ ^”中达到值并且在数组中生成数组时,我需要爆炸数组。然后我会将信息输入数据库。
我试图爆炸,预告和爆炸,但没有找到解决此问题的方法。
答案 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
返回按','爆炸的每个字符串。