2010-11-17 2 views
0

Я собираюсь туда и обратно с помощью in_array и для циклов, но не смог выполнить то, что я пытался сделать. ..php question - попытка добавить к массиву, если ключ не найден.

у меня есть массив (с именем $ контактов), который выглядит следующим образом:

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, является в ключах $ контакты массива не, то я хочу, чтобы добавить его со значением «0», так что конечный результат:

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

Может быть, я был на это слишком долго, потому что кажется, очень трудно сделать это, так что, надеюсь, после отступая и получить некоторую помощь от кого-то здесь, я чувствую себя снова нормально ...

ответ

0

ли вы попробовать что-то вроде:

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

Нет, но я понять это ... Я, наконец, нашел функцию array_key_exists, и теперь я получил то, что мне нужно ... Спасибо! –

+1

Если вы решили, что это проблема, это все, что имеет значение :) – gligoran

2

Это?

foreach($results as $obj) { 
    $contacts[] = (int) array_key_exists($obj['uid'], $contacts); 
} 
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)); 
0

Я хотел бы сделать:

foreach ($result as $uid => $res) { 
if (!array_key_exists($uid, $contacts)) { 
    $contacts[$uid] = 0; 
} 
} 
Смежные вопросы