Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的pop数组_Php_Arrays - Fatal编程技术网

php中的pop数组

php中的pop数组,php,arrays,Php,Arrays,我需要这个输出 Array ( [id:>] => 0 [isonline] => 0 [userclass_id] => 3 ) 我用这个代码得到这个输出: $pr = array('id:>'=>$id,'isonline'=>'0','userclass_id'=>'3'); print_r($params); $params = array(); array_push($params,array('userclass_

我需要这个输出

Array
(
   [id:>] => 0
   [isonline] => 0
   [userclass_id] => 3
)
我用这个代码得到这个输出:

$pr = array('id:>'=>$id,'isonline'=>'0','userclass_id'=>'3');
print_r($params);
$params = array();
array_push($params,array('userclass_id'=>'3'));  //  Members
array_push($params,array('isonline'=>'0')); // Online
array_push($params,array('id:>'=>$id));  
这很好。但我想一个接一个地排列新元素。 当我使用此代码时:

$pr = array('id:>'=>$id,'isonline'=>'0','userclass_id'=>'3');
print_r($params);
$params = array();
array_push($params,array('userclass_id'=>'3'));  //  Members
array_push($params,array('isonline'=>'0')); // Online
array_push($params,array('id:>'=>$id));  
我得到以下输出:

Array
(
[0] => Array
    (
        [userclass_id] => 3
    )

[1] => Array
    (
        [isonline] => 0
    )

[2] => Array
    (
        [id:>] => 0
    )
)

我希望动态添加新元素,但也希望有第一个输出。感谢您的帮助。

您正在使用array\u push,它将元素添加到数组的末尾。您应该使用array_unshift,它将在数组的开头添加新项

$element = array();
$element['userclass_id'] = 3;
$element['isoline'] = 0;
$element['id:>'] = $id;

$params[] = $element
$params = array();
$params['userclass_id'] = 3;
$params['isoline'] = 0;
$params['id:>'] = $id;
当以编程方式依赖php中的数组顺序时。。。array_pop、array_push、array_shift和array_unshift是您的朋友。认识他们。。。爱他们


关联数组中键值的顺序无关紧要。因此,您不需要
array\u push
array\u unshift
。您只需将一个键与所需的值关联(反之亦然)。因此,您可以编写以下代码来向
$params
数组动态添加值

$key = "my_id:2";
$value = "23";
$params[$key] = $value;

是的,没有移动或推。。。只需将
$key
添加到方括号和您的all good之间

erenon的答案可能更好,但如果您真的想一次添加一个元素的子数组:

$params = array();
array_unshift($params,array('userclass_id'=>'3'));  //  Members
$params[0]['isonline'] = 0;                         //  Online
$params[0]['id:>'] = $id;
这是因为array_unshift将元素放在数组的开头,因此新的子数组将始终为元素0

出于性能原因,您可能希望改为执行此操作,以使元素不会不断重新编号:

$params = array();
$params[] = array('userclass_id'=>'3');  //  Members
end($params); // Move to the new element
$key = key($params); // Get the key of the new element
$params[$key]['isonline'] = 0;           //  Online
$params[$key]['id:>'] = $id;
就这样怎么样

$aParams[] = array(
    'userclass_id' => 3,
    'isoline' => 0,
    'id:>' => $id
);

我非常喜欢以这种方式分配数组项中的所有值,而不是单独分配语句。

发生的事情是,您将新数组推到当前数组上,而不是将新数组合并到旧数组中。 $params=array()

或者更好的是,您只需调用array_merge一次,并将所有值传递给它

$params = array_merge($params, array('userclass_id' => 3), array('isonline' => '0'), array('id:>' => $id));
获得所需输出的另一种方法是直接在数组上分配键

$params = array();
$params['userclass_id'] = 3;
$params['isoline'] = 0;
$params['id:>'] = $id;
也许最好的方法就是在创建数组时分配键

$params = array(
    'userclass_id' => 3,
    'isoline' => 0,
    'id:>' => $id
);

我不建议命名为“id:>”,但我不知道要添加的键和值。如果您想提高性能,那么:$params[]=$element比array_push()快,“但我不知道要添加的键和值。”您是否尝试过
$element[$key]=$value
?“但我不知道要添加的键和值。”您可以使用count($array)对数组中的元素进行计数,然后向其中添加1。所以$array[(count($array)+1)]['userclass_id']=3;如此类推。@Sbm007:“$array[(count($array)+1)]['userclass_id']=3”永远不要这样做。使用[]运算符。