php问题 - 如果找不到密钥,尝试添加到数组

时间:2010-11-17 03:11:53

标签: php arrays key

我一直在使用in_array和for循环,但是还没能完成我一直想做的事情......

我有一个如下所示的数组(名为$ contacts):

Array
(
    [3] => 1
    [5] => 1
    [7] => 1
)

我正在尝试添加额外的密钥=>基于查询结果的值对:

//query results
+------+------+
| uid  | nid  |
+------+------+
|    1 |   24 |
|    3 |   23 |
|    4 |   22 |
|    5 |   28 |
|    6 |   29 |
|    7 |   30 |
|    8 |   27 |
+------+------+

我想要做的是如果 uid在$ contacts数组键中,那么我想添加值为“0” ,最终结果如下:

Array
(
    [3] => 1
    [5] => 1
    [7] => 1
    [1] => 0
    [4] => 0
    [6] => 0
    [8] => 0
)

也许我已经这么久了,因为这似乎很难做到这一点,所以希望在退回并从这里的某人那里得到一些帮助后,我会再次感到正常......

4 个答案:

答案 0 :(得分:2)

此?

foreach($results as $obj) {
   $contacts[] = (int) array_key_exists($obj['uid'], $contacts);
}

答案 1 :(得分:1)

这是一个php 5.3方法

$ar1 = array (
    3 => 1,
    5 => 1,
    7 => 1
);

$q = array(
    1 => 24,
    3 => 23,
    4 => 22,
    5 => 28,
    6 => 29,
    7 => 30,
    8 => 27
);

print_r( $ar1 + array_map( function($v){ return $v=0; }, $q ) );

答案 2 :(得分:0)

您尝试过类似的事情吗?

if (!isset($contacts[1]))
    $contacts[1] = 0;

答案 3 :(得分:0)

我愿意:

foreach ($result as $uid => $res) {
if (!array_key_exists($uid, $contacts)) {
    $contacts[$uid] = 0;
 }
}