【问题标题】:PHP insert element between elements in an arrayPHP 在数组元素之间插入元素
【发布时间】:2016-12-12 10:39:45
【问题描述】:

我的 PHP 代码会生成这样的动态 JSON 数组:

{"key":"user_email","relation":"=","value":"email@gmail.com"},
{"key":"user_email","relation":"=","value":"email@gmail.com"},
{"key":"user_email","relation":"=","value":"email@gmail.com"}

我需要调整它以在每个元素之间插入一个元素,如下所示:

{"key":"user_email","relation":"=","value":"email@gmail.com"},
{"operator":"OR"},
{"key":"user_email","relation":"=","value":"email@gmail.com"},
{"operator":"OR"},
{"key":"user_email","relation":"=","value":"email@gmail.com"}

这是我当前生成 JSON 的 PHP 代码:

$jsonData = array();

$allStaffInit = mysql_query("SELECT * FROM users");

while ($staffrow = mysql_fetch_object($allStaffInit)){

    $object = new stdClass();
    $object->key = "user_email";
    $object->relation = "=";
    $object->value = $staffrow->value;

    $jsonData[] = $object;       
}

【问题讨论】:

    标签: php arrays json onesignal


    【解决方案1】:

    您可以在 while 循环之前创建分隔符对象。

    $or = (object) ['operator' => 'OR'];
    

    然后在添加$object 后将其添加到循环中的数组中。

    while ($staffrow = mysql_fetch_object($allStaffInit)){
        $object = new stdClass();
        $object->key = "user_email";
        $object->relation = "=";
        $object->value = $staffrow->value;
        $jsonData[] = $object;
        $jsonData[] = $or;      // << here
    }
    

    在您json_encode 之前,在最后一项之后弹出额外的一项。

    array_pop($jsonData);
    

    【讨论】:

    • 这正是我所需要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 2012-07-21
    • 2012-09-27
    • 2014-07-04
    相关资源
    最近更新 更多