【问题标题】:Conditionally add to an array有条件地添加到数组
【发布时间】:2018-08-06 15:35:30
【问题描述】:

我正在尝试在 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) 空的

【问题讨论】:

  • $val 真的是在推送数据吗?
  • 为什么用字符串0初始化$key1,然后使用$key1++
  • 小提示:不要把你的代码放在C:\wamp64\www文件夹中。那是为 WAMPServer 保留的。为您的所有项目创建一个子文件夹,或者更好的是在一个完全独立的文件夹中创建一个虚拟主机
  • 谢谢肖恩!非常感谢两个 cmets 的工作

标签: php arrays if-statement


【解决方案1】:

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

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

另外,要追加到数组,你不需要维护自己的索引,你可以使用这个语法:

$connected[] = $val;

【讨论】:

    猜你喜欢
    • 2019-03-28
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多