Implode()不在While循环中工作

时间:2017-05-23 14:44:12

标签: php arrays

对于我收到此消息的原因感到困惑

  

警告:implode():传递的参数无效

这是我的剧本

$array

我知道echo '<pre>'; print_r($array); echo '</pre>'; 是一个正确的索引数组..如果我在for / foreach循环之前或之后执行此操作:

Array
(
    [0] => Array 1 Node 1
    [1] => Array 1 Node 2
    [2] => Array 1 Node 3
    [3] => Array 1 Node 4
    [4] => Array 1 Node 5
)

Array
(
    [0] => Array 2 Node 1
    [1] => Array 2 Node 2
    [2] => Array 2 Node 3
    [3] => Array 2 Node 4
    [4] => Array 2 Node 5
)

Array
(
    [0] => Array 3 Node 1
    [1] => Array 3 Node 2
    [2] => Array 3 Node 3
    [3] => Array 3 Node 4
    [4] => Array 3 Node 5
)

etc. etc. etc.

输出是我的所有数组

;

我想要摆脱所有这些的输出,如果你不能通过循环判断,是一个类似csv的文件,带有{{1}}分隔符。

这个循环在循环之外工作正常,但是我遇到的问题是它没有从每个循环中检索所有结果 - 所以在循环中这样做我正在尝试我认为是理想的。

任何人都知道我做错了什么/为什么这不适用于while循环?

1 个答案:

答案 0 :(得分:1)

看起来$array是一个字符串数组。在这种情况下,您不应该需要内部forforeach循环。如果$array的每个实例都是其中之一:

Array
(
    [0] => Array 1 Node 1
    [1] => Array 1 Node 2
    [2] => Array 1 Node 3
    [3] => Array 1 Node 4
    [4] => Array 1 Node 5
)

然后你应该能够直接破坏它。

$out = "";
while($row = $results->fetch_array()) {

    // do stuff here to create an indexed array

    $out .= implode(";", $array) . "<br>";
}

顺便说一下,// do stuff here to create an indexed array 可能没有必要。我不确定它究竟是做什么的,但是你可以在你的fetch方法中指定它应该获取一个数字索引的数组。

while($row = $results->fetch_array(MYSQLI_NUM)) { ...

(或者只使用fetch_row方法。)