PHP Implode没有分离数组

时间:2013-01-24 17:21:17

标签: php html mysql arrays

我正在使用$ _POST从表单页面中获取MySQL查询。上一页是从数据库发送ID列表。但是,当我使用implode时,它会回显一个字符串:

2210222022362244

即使我正在使用Implode功能:

$variable = implode(',' ,$_POST['job_ids']);
echo $variable

我也试过了变化:

$variable = implode(',' ,(array)$_POST['job_ids']);
echo $variable

然而,回声相同的字符串。我也试过'get'并生成了这个URL字符串,生成了相同的字符串:'2210222022362244'字符串:

testing.php?job_ids%5B%5D =%0D 0A%09%09%09%09%09%++ 09%09%%0D 0A%09%09%09%09%09%+ +% 09%092210222022362244%09%09%09%09%09%++ 09%09%0D 0A%09%09%09%09%09%++ 09%09%&安培; supervisorid = 58

我正在寻找的输出是:

2210,2220,2236,2244

我想将这些值存储在变量中,然后在MySQL更新查询中使用它们。我假设这意味着我从上一页发送的数组有问题。我在该页面上使用的代码在这里:

<form action="testing.php" method="post">
<input type="hidden" name="job_ids[]" value="

<?php
$senditbaby=0;

while ($senditbaby < $num)                      
{
$senditbabyID=mysql_result($result,$senditbaby,"job_id");                       
echo $senditbabyID;                     
$senditbaby++;
}

?>
">

<div class="modal-footer">
<input type="submit" class="btn btn-primary" value="Approve all tickets">
</div></form>

非常感谢您的帮助!

5 个答案:

答案 0 :(得分:1)

只有一个job_ids[]输入,因此$_POST['job_ids']中只有一个值。因此没有什么可以崩溃的。你为job_ids[]创建值的循环只是在一个接一个地回显出值,而不是以任何方式将它们分开。

答案 1 :(得分:1)

试试这个:

$variable = implode(',', str_split($_POST['job_ids'], 4));
echo $variable

答案 2 :(得分:1)

你真的为一个简单的错误写了一个很长的问题:你错过了输出逗号,所以没有任何逗号。

但我的建议是:首先收集数据,然后关心输出:

function get_job_ids_array($num, $result)
{
    $ids = array();
    $senditbaby = 0;

    while ($senditbaby < $num)                      
    {
         $senditbabyID = mysql_result($result, $senditbaby, "job_id");
         $ids[] = $senditbabyID;
         $senditbaby++;
    }

    return $ids;
}

并以逗号分隔列表:

echo implode(', ', get_job_ids_array($num, $result));

答案 3 :(得分:0)

手动解码输入时,确实是“2210222022362244”,没有任何分隔符。所以没有办法在输入中告诉你的数字。如果每个数字都是四位数,那么你需要为这个事实编写特定的代码,因为这是php无法猜到的。

此外,php将$ _POST ['job_ids']视为String,您需要先将其分解为数组。这只是因为没有通过HTTP直接传输数组的概念。

可能只是示例中的错误:您使用$ _POST,但示例网址使用GET,因此您实际上需要$ _GET ['job_ids']

答案 4 :(得分:0)

您可以使用GROUP_CONCAT在单个查询中获取逗号分隔的job_id。这种方式有助于避免内爆和多次查询。