|
|
|
| Есть многомерный ассоциативный массив типа
Array
(
[0] => Array
(
[aa] => 1
[bb] => 0
[cc] => 123
)
[1] => Array
(
[aa] => 2
[bb] => 0
[cc] => 17
)
)
|
Чем можно проверить существование значения 123 у ключа [cc] типа , как функцией in_array( ) | |
|
|
|
|
|
|
|
для: oliss
(04.04.2010 в 09:57)
| | не пробовал, но, наверное, только перебирая вышестоящий массив. То есть, если данные такие:
$one=Array
(
[0] => Array
(
[aa] => 1
[bb] => 0
[cc] => 123
)
[1] => Array
(
[aa] => 2
[bb] => 0
[cc] => 17
)
)
|
то
foreach($one AS $value){
if(in_array($value...
}
|
| |
|
|
|
|
|
|
|
для: oliss
(04.04.2010 в 09:57)
| | Нужно массив перестроить
$array = array(
"aa" =>array(),
"bb" =>array(),
"cc" => array(),
); | |
|
|
|
|
|
|
|
для: oliss
(04.04.2010 в 09:57)
| | > Чем можно проверить существование значения 123 у ключа [cc] типа , как функцией in_array( )
Чтобы сделать то, что нужно именно вам:
пусть $arr - многомерный массив
if ($arr[0]['cc'] == 123)
Вот, пожалуйте-с.
Или вам все-таки что-то другое надо, а? | |
|
|
|
|
|
|
|
для: neadekvat
(04.04.2010 в 11:17)
| | вот это
Верно ,а $arr[0] значение неизвестно
Задача вычислить наличие ['cc'] == 123 в массиве без использования цикла ,реально ли? | |
|
|
|
|
|
|
|
для: oliss
(04.04.2010 в 11:53)
| | - | |
|
|
|
|
автор: * * (04.04.2010 в 12:52) |
|
|
для: oliss
(04.04.2010 в 11:53)
| | >без использования цикла
только функциями для выполнения callback-функций , типа array_map(), array_walk(), call_user_func_array() ..., но в таких случаях все элементы массива будут проверены, и нельзя выйти сразу по нахождению, если найдено.
В случаях с присутствием искомого оптимальнее должна работать просто пользовательская функция , в теле которой что-то типа
<?
if (is_array($x)) {
$val = current($x);
do{
if ($val['cc'] == 123) return TRUE;
} while($val = next($x));
return FALSE;
или
if (is_array($x)) {
while (list($key, $val) = each($x))
if ($val['cc'] == 123) return $key;
}
return FALSE;
или с любыми другими циклами
|
возможно я чтото упустил читая мануал, в "Standard PHP Library (SPL)" тоже вроде ничего для упросщения такого нет | |
|
|
|
|
|
|
|
для: oliss
(04.04.2010 в 11:53)
| | Реально ли без цикла? реально
автор: Красная_шляпа (04.04.2010 в 11:12) письмо автору
для: oliss (04.04.2010 в 09:57)
Нужно массив перестроить
$array = array(
"aa" =>array(),
"bb" =>array(),
"cc" => array(),
);
|
| |
|
|
|
|
|
|
|
для: Ури Геллер
(04.04.2010 в 13:22)
| | Какими штатными функциями привести массив к такому виду? | |
|
|
|
|
|
|
|
для: oliss
(04.04.2010 в 14:20)
| | Ну это совсем
// <?
$array["aa"][] = 5;
$array["bb"][] = 4;
$array["cc"][] = 5;
$array["aa"][] = 123;
$array["bb"][] = 6;
$array["cc"][] = 12;
$array["aa"][] = 77;
$array["bb"][] = 10;
$array["cc"][] = 0;
$key = array_search(123, $array["aa"]);
if ($key === false) { echo "значение не найдено"; } else { echo $key; }
|
| |
|
|
|