|
|
|
| не могу дописать функцию выполняющую следующие действия:
если передать в функцию массив из пяти аргументов, она должна проверить наличие значения пятимерного массива
а если ей передать массив из двух аргументов, то она должна проверить существования значения двухмерного массива. Почему так не работает? Имя массива составлено правильно.
<?php
function issetValueArr($arr, $core)
{
$name='core';
for($a=0;$a<count($arr);$a++)
{
$name.='[' .$arr[$a]. ']';
}
echo $name;
if (isset($$name)) echo 'да'; else echo 'нет';
}
|
| |
|
|
|
|
|
|
|
для: deimand
(19.08.2010 в 15:37)
| | A зачем вам $$name с двумя?? и зачем тут if если он всегда будет "нет" если $$name и "да" если $name.
<?php
function issetValueArr($arr, $core)
{
$name='core: ';
foreach($arr as $val)
{
$name.='[' .$val. '] ';
}
echo $name;
if (isset($$name)) echo 'да'; else echo 'нет';
}
?>
|
| |
|
|
|
|
|
|
|
для: Usta
(19.08.2010 в 16:46)
| | есть url
http://site.ru/1/2/3/4/5/
нужно проверить существует ли элемент массива $core[1][2][3][4][5]
http://site.ru/5/2/1/
нужно проверить существует ли элемент массива $core[5][2][1]
такое как сделать автоматически? | |
|
|
|
|
|
|
|
для: deimand
(19.08.2010 в 17:11)
| | А где вы видите в ссылке массив? И откуда вы получаете $core[1][2][3][4][5]? | |
|
|
|
|
|
|
|
для: sim5
(19.08.2010 в 17:34)
| | >А где вы видите в ссылке массив?
я всего лишь привел пример. ну а если так?
site.ru/file.php?param=1,2,3,4,5
$arr = explode(",", $_GET['param']);
>И откуда вы получаете $core[1][2][3][4][5]?
Вот его я и хочу как то получить, чтобы проверить условием if (isset($core[1][2][3][4][5])) | |
|
|
|
|
|
|
|
для: deimand
(19.08.2010 в 17:43)
| | Если параметр 1,2,3,4,5, и $arr = explode(",", $_GET['param']);, то count($arr) даст вам число элементов массива. У вас же вопрос не понятен - толи вам нужна глубина вложения, толи вас интересует некое значение, толи бог еще чего.... | |
|
|
|
|
|
|
|
для: sim5
(19.08.2010 в 17:55)
| | то что можно считать количества элементов - я знаю. только при уровне вложенности в 10 - придется вручную описывать 10 ситуаций, а хотелось поместить все в одну функцию, вот и все. | |
|
|
|
|
|
|
|
для: deimand
(19.08.2010 в 18:08)
| | Каких нафиг ситауаций, если, как я вижу, вы каждое значение в итоге пытаетесь (хотите, хотя бог его значет чего вы хотите) ипользовать как ключ, следовательно глубина вложения у вас всегда будет равна числу элементов этого массива.
У вас вопрос, извиняюсь, задан через задницу, не понять чего вам надо. Если судить по первой ссылке, то вам нужен mod_rewrite. А вообще не понять, чего, зачем, и для чего....
Вот это "она должна проверить наличие значения пятимерного массива" как пониамть? | |
|
|
|
|
|
|
|
для: sim5
(19.08.2010 в 18:22)
| | Буду на пальцах показывать
к примеру есть массив
<?php
$core =
array
(
0 => 1,
1 => 2,
2 => array
(
0 => array
(
0 => 3,
1 => 4,
2 => 5,
3 => 6,
),
1 => array
(
0 => 7,
1 => 8,
),
2 => 9,
3 => 10,
4 => 11,
5 => 12,
),
3 => array
(
0 => 13,
1 => 14,
2 => array
(
0 => 15,
),
3 => array
(
0 => array
(
0 => 16,
1 => 17,
),
1 => array
(
0 => 18,
1 => 19,
),
),
),
4 => array
(
0 => 19,
1 => 20,
2 => 21,
),
5 => 22,
6 => 23,
);
|
вот под него нужно такую ф-ию изобрести, чтобы при ссылке
?param=2,4 на страницу выводилось 11
?param=3,3,0,1 на страницу выводилось 17
?param=3,3,1,1 на страницу выводилось 19
?param=3,3,1 на страницу ничего не выводилось, т.к. массив, а не значение
?param=5,2 на страницу ничего не выводилось, т.к. не существует элемента
echo $core[2][4]; // да - 11
echo $core[3][3][0][1]; // да - 17
echo $core[3][3][1][1]; // да - 19
echo $core[3][3][1]; // нет - array
echo $core[5][2]; // нет - !isset | |
|
|
|
|
|
|
|
для: deimand
(20.08.2010 в 00:04)
| | Ну а я о чем? Вы задаете вопрос о глубине вложенности, упоминая значение глубины, таким вычурным способом, что понять вас можно только после приема грамм 500. А вам всего лишь нужно узнать значение конкретного элемента в массиве. Вот и пойми вас после этого, чего вы хотите.
Делается это просто - передавайте в параметре значения описывающее этот элемент массива - [2][4], а не 2,4, или если 3,3,1,1, то так, чтобы не было неоднозначностей, коли вы хотите в последствии преварать это в [3][3][1][1] (вот только зачем). А уж проверить наличие в массиве указанного индекса, это плевое дело, и не стоит так заморачиваться, как это вы делаете. | |
|
|
|
|
|
|
|
для: deimand
(20.08.2010 в 00:04)
| | PS. Массив описанный вами сущестовать не может, ибо в нем ошибки. | |
|
|
|
|
|
|
|
для: sim5
(20.08.2010 в 07:09)
| | Как это не может? echo не зря же написано, проверьте. | |
|
|
|
|
|
|
|
для: deimand
(20.08.2010 в 11:19)
| | Зачем же мне проверять, это вам следует проверить, да и echo не проверяет массив. У вас в массивах никчемная запятая после поледних элементов массива - прывкните так делать, напоритесь на неприятности. | |
|
|
|
|
|
|
|
для: sim5
(20.08.2010 в 11:24)
| | похапе ведь позволяет это делать. вобще этот язык страшно расхолаживает. | |
|
|
|
|
|
|
|
для: nikita2206
(20.08.2010 в 13:40)
| | Он много чего позволяет, чего позволять не стоило бы, а привычка пагубная хуже врага злейшего. | |
|
|
|
|
|
|
|
для: sim5
(20.08.2010 в 13:46)
| | Я и говорю - расхолаживает. Большинства глупых вопросов на этом форуме не было бы, если бы тут была строгая типизация, хотя я против этого. | |
|
|
|
|
|
|
|
для: deimand
(19.08.2010 в 18:08)
| | - | |
|
|
|
|
|
|
|
для: deimand
(19.08.2010 в 15:37)
| |
<?php
function issetValueArr($arr, $core)
{
foreach($arr as $term)
{
if(!is_array($core))
return null;
$core= @$core['term'];
if($core === null)
return null;
}
return $core;
}
|
| |
|
|
|
|
|
|
|
для: Trianon
(19.08.2010 в 19:10)
| | спасибо | |
|
|
|