проверка, находится ли vaule в определенном ключе массива - PullRequest
1 голос
/ 23 декабря 2010

Я новичок в работе с массивами, поэтому мне нужна помощь. С получением только одного vaule из массива. У меня есть оригинальный массив, который выглядит так:

 $array1= Array(   
     [0] => 1_31   
     [1] => 1_65  
     [2] => 29_885...)

Я пытаюсь найти и вернуть только значение после подчеркивания. Я выяснил, как получить эти данные во второй массив и вернуть значения в виде нового массива.

    foreach($array1 as $key => $value){
    $id = explode('_',$value);
}

, что дает мне:

Array ( [0] => 1  [1] => 31 ) 
Array ( [0] => 1  [1] => 65 ) 
Array ( [0] => 29 [1] => 885 )

Я также могу получить список идентификаторов или частей после подчеркивания, используя $id[1] Я просто не уверен, что это лучший способ и как это сделать, как искать. Я пытался использовать in_array(), но он просматривал весь массив, и я не мог заставить его искать только один ключ массива.

Любая помощь будет отличной.

Ответы [ 4 ]

2 голосов
/ 23 декабря 2010

Вы можете использовать preg_grep(), чтобы получить массив:

$array1= array("1_31", "1_65", "29_885");
$num = 65;
print_r(preg_grep("/^\d+_$num$/", $array1));

Выходы:

Array
(
    [1] => 1_65
)

См. http://ideone.com/3Fgr8

2 голосов
/ 23 декабря 2010

Если часть после подчеркивания уникальна, сделайте ее ключом для нового массива:

$newArray = array();
foreach($array1 as $key => $value){
    list($v,$k) = explode('_',$value);
    $newArray[$k] = $v;
}

Таким образом, вы можете проверить наличие ключа с помощью isset($newArray[$mykey]), что будет более эффективным.

1 голос
/ 23 декабря 2010

Я бы сказал, что вы делаете это примерно так же, как и все остальные.

EDIT

Альтернативный метод:

$array1 = array_map(create_function('$a','$_ = explode("_",$a); return $_[1];'),$array1);
echo in_array(3,$array1) ? "yes" : "no"; // 3 being the example
0 голосов
/ 23 декабря 2010

Я бы согласился.Если вы хотите увидеть, что значение существует в массиве, просто используйте функцию 'array_key_exists', если она возвращает true, используйте значение для чего угодно.

...