Array
(
[name] =>
[stuff] =>
[price]=>
[date1] =>
[date2] =>
[post_type] =>
)
SimpleXMLElement Object
(
[startDate] =>
[Name] =>
[stuffName] =>
[regionNameRu] =>
[postType] =>
[price] =>5
[ticketsTo] => SimpleXMLElement Object
)
)
Хочется реализовать что то похожее на поиск где первый массив получает данные POST'ом, а второй через simplexml_load_file подгружает данные.
Спустя 52 минуты, 59 секунд (20.04.2011 - 13:24) sergeiss написал(а):
Интересно... Только я один не понял, что хотел спросить ТС?
Спустя 1 час, 22 минуты, 14 секунд (20.04.2011 - 14:46) chupakabre написал(а):
Хмм...первый массив это $_POST отправленный с текст боксов, второй вытащен из XML. Это получается как поиск по категориям, [name] сравниваем с [Name], если есть совпадения то передаем информацию если нет то нет.
Спустя 39 минут, 37 секунд (20.04.2011 - 15:25) sergeiss написал(а):
ОК... Проходи циклом for по массиву POST. И сравнивай ключи из массива ПОСТ и из второго массива. При совпадении - выполняешь действия.
Как это сделать... Это просто
Подумай сам для начала.
Как это сделать... Это просто
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 8 минут, 14 секунд (20.04.2011 - 15:34) chupakabre написал(а):
У меня бесконечный цикл получаеться, или выводит все по первому совпадению игноря другие.
Спустя 3 минуты, 9 секунд (20.04.2011 - 15:37) Renden написал(а):
chupakabre
Приведи пример кода. Как у тебя получается бесконечный цикл?
Приведи пример кода. Как у тебя получается бесконечный цикл?
Спустя 2 минуты, 2 секунды (20.04.2011 - 15:39) chupakabre написал(а):
Renden
я сейчас пытаюсь через XML вытянуть то что мне надо, так что я цикл удалил.
я сейчас пытаюсь через XML вытянуть то что мне надо, так что я цикл удалил.
Спустя 46 секунд (20.04.2011 - 15:40) chupakabre написал(а):
а так обычный foreach c if внутри пробывал.
Спустя 38 минут, 52 секунды (20.04.2011 - 16:18) sergeiss написал(а):
Ты код покажи... А не описывай его
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 20 минут (20.04.2011 - 16:38) chupakabre написал(а):
$y = 0;
for($_POST; count($sxml); $y++){
if($_POST[a]==$sxml[a]){
}echo $_POST[b];
if($_POST[c]==$sxml[b]){
}echo $_POST[d];
if($_POST[Stars]==$sxml[c]){
}echo $_POST[f];break;
}
Я смутно если честно представляю, как это все работать должно я думал все будет легче. Думал тут рекурсия спасет, что бы сравнить все и вся, но моих мозгов не хватило.
Кратко объясню что и как я думал
у меня на форме 3 выпадающих списка и одна кнопка, графы (почтовая доставка, товар, город (это как тест делалось)) город пока в XML один, товара 3 штуки, почтовых служб 3.....По факту выбирая 1 элемент (город к примеру) я должен получить все записи.....так и есть, но при выборе почтовой слудбы он не сокращает круг поиска, а выводит все почтовые службы. МОих знаний и опыта тут явно не хватает.
Спустя 8 минут, 22 секунды (20.04.2011 - 16:47) sergeiss написал(а):
Во-первых, я говорил про цикл foreach, а не цикл for. Используя foreach, ты можешь не знать ключи массива, но спокойно перебрать его.
Во-вторых, что такое ключи a,c,d,f, Starts у ПОСТа???
И еще - используй тэги оформления кода, находятся справа над полем ввода (кнопки PHP, SQL, ....)
Во-вторых, что такое ключи a,c,d,f, Starts у ПОСТа???
И еще - используй тэги оформления кода, находятся справа над полем ввода (кнопки PHP, SQL, ....)
Спустя 6 минут, 33 секунды (20.04.2011 - 16:53) chupakabre написал(а):
Цитата |
Во-вторых, что такое ключи a,c,d,f, Starts у ПОСТа??? |
Это как пример, в переменных ошибок нету, я постоянно все дампом проверяю. Проблема именно в цикле. Я не могу понять синтаксически, что во что вложить.
Спустя 3 часа, 15 минут, 19 секунд (20.04.2011 - 20:09) Renden написал(а):
chupakabre
Ну во 1-х у тя echo не внутри условий, во 2-х for у тя не останавливается так как нет условия, и зачем ты считаешь Y если ты его не используешь, твой пример должен быть хотя-бы таким:
А проще форечем перебрать
Ну во 1-х у тя echo не внутри условий, во 2-х for у тя не останавливается так как нет условия, и зачем ты считаешь Y если ты его не используешь, твой пример должен быть хотя-бы таким:
for ($y = 0; count($sxml)>$y; $y++) {
if($_POST[a]==$sxml[a])
echo $_POST[b];
if($_POST[c]==$sxml[b])
echo $_POST[d];
if($_POST[Stars]==$sxml[c])
echo $_POST[f];
}
А проще форечем перебрать
foreach ($sxml as $val) {
if($_POST[a] == $val)
echo $_POST[b];
if($_POST[c] == $val)
echo $_POST[d];
if($_POST[Stars] ==$val)
echo $_POST[f];
}
Спустя 16 часов, 9 минут, 44 секунды (21.04.2011 - 12:18) chupakabre написал(а):
foreach ($sxml as $val) {
if($_POST[a] == $val)
echo $_POST[b];
if($_POST[c] == $val)
echo $_POST[d];
if($_POST[Stars] ==$val)
echo $_POST[f];
}
Не сравнивает так, игнорит.
Спустя 16 минут, 59 секунд (21.04.2011 - 12:35) Renden написал(а):
chupakabre
ну значит нет совпадений или вывод пустой (одного из твоих постов), + кавычки надо ставить внутри $_POST['a'] и тп.
ну значит нет совпадений или вывод пустой (одного из твоих постов), + кавычки надо ставить внутри $_POST['a'] и тп.
Спустя 32 минуты, 3 секунды (21.04.2011 - 13:07) chupakabre написал(а):
Цитата |
ну значит нет совпадений или вывод пустой (одного из твоих постов), + кавычки надо ставить внутри $_POST['a'] и тп. |
Не не просто решение другое немного было
for ($y = 0; count($sxml)>$y; $y++) {
if ($_POST[a] == $sxml->row[$y]->a){
echo $_POST[b];
}
}
Вот так все работает, а как сделать форичом я пока не понимаю.
Еще вопрос хотел бы теоретический задать, я могу ведь 3х этажный иф писать ? Примерно такое в псевдо коде:
if(условие){
if(условие and условие and условие){
действие
}
}
Спустя 1 час, 11 минут, 9 секунд (21.04.2011 - 14:19) sergeiss написал(а):
Блин... Ну элементарно же!!!!
Допустим, есть массив $_POST и простой массив $arr, надо сравнить их ключи и при совпадении что-то сделать.
Если вторая часть для сравнения не массив, а более сложный объект (но в нем каким-то образом задействовано имя ключа из массива ПОСТ), то используем "переменные переменные".
Допустим, есть массив $_POST и простой массив $arr, надо сравнить их ключи и при совпадении что-то сделать.
foreach( $_POST as $k => $v )
{
if( isset( $arr[ $k ] ) )
{
// делаем это "что-то"
}
}
Если вторая часть для сравнения не массив, а более сложный объект (но в нем каким-то образом задействовано имя ключа из массива ПОСТ), то используем "переменные переменные".
Спустя 27 минут, 5 секунд (21.04.2011 - 14:46) chupakabre написал(а):
Да оказалось элементарно, и ошибка из за невнимательности.