выборка из многомерного массива

gizmaz

Новичок
выборка из многомерного массива

Всем день добрый...

народ проясните пожалуйста.. инфы прочитал кучу..

имеем вот такой массив

[4150] => Array
(
[0] => 4864
[1] => Генератор
[2] => J3
)

[4151] => Array
(
[0] => 4865
[1] => КОМПОНЕНТЫ ГЕНЕРАТОРА
[2] => 0
)


хочу выбрать $array[4151][1] = компоненты генератора.
если пишу echo $array[4151][1];

выводит

если пишу

$xx=4151;
echo $array[$xx][1];

невыводит...

как выбрать элемент массива - если нужно данные представить в переменной ?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Опиши реальную проблему
 

gizmaz

Новичок
Проблемма что есть 2 многомерных массива,
ив одном из них нужно найти и обновить данные используя данные из первого массива...

$record_numbers = dbase_numrecords($db);
for ($i = 1; $i <= $record_numbers; $i++)
{
$row = dbase_get_record_with_names($db, $i);
if (isset($row
Код:
))
  		{
            echo $root[$row['CODE']][1]." <br>";
	  	}
	}

echo внутри цикла данные $root[$row['CODE']][1] на экран не выводит...

стал эксперементировать с элементарными данными
например echo $root[4151][1] - выводит

вот так 
$xx=4151;
echo $array[$xx][1];

невыводит.... почему ?
 

gizmaz

Новичок
выводит test2

я и сам понимаю что должна выводит... но в выводе пусто... загадка.

массив $root вот такой структуры

Array
(
[0] => Array
(
[0] => 0
[1] => 
[2] =>
)

[1] => Array
(
[0] => 4
[1] => SIMM,SRAM, ОЗУ
[2] => 0
)

)

тока данных там больше чем я в этом примере привел..
 

gizmaz

Новичок
уверен, т.к.
echo $row['CODE'];

выдает 4151

и $xx = $row['CODE'];

echo $xx;

тоже выдает до 4151...
короче дошел до маразма... но один хрен не работает... черт знает что...
 

findnext

Новичок
gizmaz
конечно очень странно, а какая версия php??

-~{}~ 17.12.08 13:33:

http://bugs.php.net/bug.php?id=24652

-~{}~ 17.12.08 13:36:

походу здесь похожая проблема
 

gizmaz

Новичок
включил вывод ошибок

так вот имеем
echo $root[4151][1]."== <br>";
ошибки нет выдает - КОМПОНЕНТЫ ГЕНЕРАТОРА


$xx=$row['CODE'];
$test = $root[$xx][1];

ошибка
Notice: Undefined index: 4151

почему в первом случае индекс 4151 видится, а во втором Undefined
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
почему в первом случае индекс 4151 видится, а во втором Undefined
Займись отладкой и выясни.
Телепатов здесь нет
www.phpfaq.ru/debug
 

gizmaz

Новичок
Спасибо всем, разобрался..
дело было в том, что данные сосались из 1С
"уродливая" 1С по иному эту программу назвать немогу, хранит в своей базе целочисленные данные с пробелами с обоих сторон..
т.е. 4151 в моем случае реально было

пробел4151пробел

пришлось вставить в код $xx = str_replace(" ", "", $xx);
все стало ок...
имейте ввиду при работе с этой 1С.
 

findnext

Новичок
gizmaz
есть такие команды как trim и в php и в mysql

-~{}~ 17.12.08 14:29:

str_replace медленее чем trim
 

gizmaz

Новичок
ок, спасибо.

-~{}~ 17.12.08 15:18:

подскажите с функцией...
знаю значение в массиве
[2] => Array
(
[0] => 5
[1] => Винчестеры, DOM, DiskOnChip
[2] => 0
)

что array[2][0] = 5

а какой функцией найти индекс массива 2 зная значение для этого массива = 5 ?
что-то в доке ненашел ...
 

gizmaz

Новичок
у меня 2 массива, данные в них перемешаны
в этих массивах есть одинаковые значения которые и надо сравнить, и если они равны - то заменить значение во втором массиве - значением из первого...

тупо устраивать цикл в цикле, при том что данных много, неподходит... вот и думал функцию поиска ключа для значения во втором массиве...
 
Сверху