Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проверка значения ключа в многомерном массиве
 
 автор: oliss   (04.04.2010 в 09:57)   письмо автору
 
 

Есть многомерный ассоциативный массив типа
Array
(
    [0] => Array
        (
           [aa] => 1
           [bb] => 0
           [cc] => 123
        )
    [1] => Array
        (
            [aa] => 2
            [bb] => 0
            [cc] => 17
        )
)


Чем можно проверить существование значения 123 у ключа [cc] типа , как функцией in_array( )

  Ответить  
 
 автор: kosta_in_net   (04.04.2010 в 10:12)   письмо автору
 
   для: 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...
}

  Ответить  
 
 автор: Красная_шляпа   (04.04.2010 в 11:12)   письмо автору
 
   для: oliss   (04.04.2010 в 09:57)
 

Нужно массив перестроить

$array = array(
"aa" =>array(),
"bb" =>array(),
"cc" => array(),
);

  Ответить  
 
 автор: neadekvat   (04.04.2010 в 11:17)   письмо автору
 
   для: oliss   (04.04.2010 в 09:57)
 

> Чем можно проверить существование значения 123 у ключа [cc] типа , как функцией in_array( )
Чтобы сделать то, что нужно именно вам:
пусть $arr - многомерный массив
if ($arr[0]['cc'] == 123)
Вот, пожалуйте-с.
Или вам все-таки что-то другое надо, а?

  Ответить  
 
 автор: oliss   (04.04.2010 в 11:53)   письмо автору
 
   для: neadekvat   (04.04.2010 в 11:17)
 

вот это
['cc'] == 123

Верно ,а $arr[0] значение неизвестно
Задача вычислить наличие ['cc'] == 123 в массиве без использования цикла ,реально ли?

  Ответить  
 
 автор: sim5   (04.04.2010 в 12:17)   письмо автору
 
   для: 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)" тоже вроде ничего для упросщения такого нет

  Ответить  
 
 автор: Ури Геллер   (04.04.2010 в 13:22)   письмо автору
 
   для: 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(),
);

  Ответить  
 
 автор: oliss   (04.04.2010 в 14:20)   письмо автору
 
   для: Ури Геллер   (04.04.2010 в 13:22)
 

Какими штатными функциями привести массив к такому виду?

  Ответить  
 
 автор: Красная_шляпа   (04.04.2010 в 22:15)   письмо автору
 
   для: 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; }

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования