我试图将动态字符串加载到现有的空数组(以创建数组数组)。动态字符串如下所示(一个,两个或多个数字数组,以逗号分隔)
$str = "[52,18,140,41,56],[54,18,145,43,58]";
并将其加载到其中的空数组
$arr = explode(',', $str);
当print_r($arr);
正在打印时,看来我正在将数据加载到数组中
Array (
[0] => [52
[1] => 18
[2] => 140
[3] => 41
[4] => 56]
[5] => [54
[6] => 18
[7] => 145
[8] => 43
[9] => 58]
)
但是当我尝试通过foreach ($arr as list($a, $b, $c, $d, $e)
访问它们时,我什么也没收到
$arr = [];
$str = "[52,18,140,41,56],[54,18,145,43,58]";
$arr = explode(',', $str);
print_r($arr);
echo '<table style="width:40%">';
foreach ($arr as list($a, $b, $c, $d, $e)) {
echo '<tr>';
echo '<th>'.$a.'</th>';
echo '<th>'.$b.'</th>';
echo '<th>'.$c.'</th>';
echo '<th>'.$d.'</th>';
echo '<th>'.$e.'</th>';
echo '</tr>';
}
echo '</table>';
为什么会这样,我该如何解决?
答案 0 :(得分:1)
我认为这就是您想要的:
selectedText
哪个输出:
$str = "[52,18,140,41,56],[54,18,145,43,58]";
$arr = explode('],[', $str);
echo '<table style="width:40%">';
foreach ($arr as $item) {
$item = trim($item,'[]');
list($a, $b, $c, $d, $e) = explode(',', $item);
echo '<tr>';
echo '<th>'.$a.'</th>';
echo '<th>'.$b.'</th>';
echo '<th>'.$c.'</th>';
echo '<th>'.$d.'</th>';
echo '<th>'.$e.'</th>';
echo '</tr>';
}
echo '</table>';
答案 1 :(得分:1)
您可以使用preg_split()
代替,它可以通过正则表达式分割字符串。使用[
和]
不会添加到数组中。
$arr = preg_split("/[\[\],]+/", $str);
foreach ($arr as $item){
if (!empty($item))
// do something
}
因此您的代码更改为
$str = "[52,18,140,41,56],[54,18,145,43,58]";
$arr = preg_split("/[\[\],]+/", $str);
echo '<table style="width:40%"><tr>';
foreach ($arr as $item){
if (!empty($item))
echo "<th>{$item}</th>";
}
echo '</tr></table>';
在demo中查看结果