首页 > 解决方案 > 有条件地添加到数组

问题描述

我正在尝试在 IF 条件下添加到数组,但它没有附加,尽管我在 foreach 循环中

我所拥有的没有附加到 $connected 但密钥递增:

$key1 = '0';
foreach ($dataNewAndUnlock1 as $key => $val) {
    $stream = ssh2_exec($connection, 'ping -c 1 '. $val);

    stream_set_blocking($stream, true);

    while ($o = fgets($stream)) {
        $connected = array();

        if (strpos($o, 'ttl') !== false) {
            $connected[$key1] = $val;

            echo $val .' EnodeB is connected <br>';
            $key1++;
        }

        if (strpos($o, '0 received') !== false) {
            echo $val .' EnodeB NOT connected <br>';
        }
    }
}

$connnected 给出了这样的东西,然后 var_dump 最后是空的

C:\wamp64\www\SendJason2.php:286:
数组(大小=1)
  0 => 字符串“XXX.XX.XXX.XXX”(长度=14)
C:\wamp64\www\SendJason2.php:286:
数组(大小=1)
  1 => 字符串“XXX.XX.XXX.XX”(长度=13)
C:\wamp64\www\SendJason2.php:286:
数组(大小=1)
  2 => 字符串“XXX.XX.XXX.XXX”(长度=14)
C:\wamp64\www\SendJason2.php:286:
数组(大小=1)
  3 => 字符串'XXX.XX.XXX.XXX'(长度=14)
C:\wamp64\www\SendJason2.php:286:
数组(大小=1)
  4 => 字符串“XXX.XX.XXX.XXX”(长度=14)
...

C:\wamp64\www\SendJason2.php:306:
数组(大小=0)
  空的

标签: phparraysif-statement

解决方案


$connected每次foreach循环迭代时,您都用一个空数组覆盖。将 to 的分配$connected移到foreach循环之前。

$key1 = '0';
$connected = array();
foreach ($dataNewAndUnlock1 as $key => $val) {
    ...

此外,要追加到数组,您不需要维护自己的索引,只需使用以下语法:

$connected[] = $val;

推荐阅读