PHP 如何 foreach 分解 POST 多个值

PHP How to foreach explode POST multiple values

我想从 POST 多个值中分解

用第一个 space 切断“1234”(按字符而不是位置)

我收到错误“数组到字符串的转换”

Form

<input type="checkbox" name="docid[]" value="1234 harry potter">

Submit

$docID = $_POST['docid'];
foreach($docID as $val) {
    echo explode(' ', $val);
}

Output

1234

编辑 我想将输出插入到 DB

explode returns 一个 数组 的字符串,所以 echo 不起作用。它还有第三个参数,用来限制返回的元素:

<?php 
$docID = $_POST['docid'];
foreach($docID as $val) {
    $exploded = explode(' ', $val, 2);
    // print_r($exploded); # Array ( [0] => 1234 [1] => harry potter )
    echo $exploded[0];
}

会输出1234

编辑:如果您想从结果中删除 1234,请使用 echo $exploded[1]; - 这将输出 harry potter

简单:

<form action="index.php" method="post">
    <input type="checkbox" name="docid[]" value="1234 harry potter">
    <input type="checkbox" name="docid[]" value="45678 test 123">
    <button type="submit">Submit</button>
</form>
<?php

$docID = $_POST['docid'] ?? [];

foreach ($docID as $val) {
    $values = explode(' ', $val);

    foreach ($values as $v) {
        echo $v . PHP_EOL;
    }
}

输出(如果选中所有复选框):

1234 harry potter 45678 test 123

我不太确定你想做什么,但根据你的代码,如果你只想记录你从爆炸中得到的东西,只需将你的爆炸封装在 print_r()

例如:

foreach($docID as $val) {
    print_r(explode(' ', $val));
}

我找到了另一个解决方案,它也有效。

$docID = $_POST['docid']

foreach($docID  as $val) {
    echo explode(' ', $val)[0];
    echo '<br>';
}