Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Удалить из массива массив в котором нет значений, Удаление из массива массив в котором пустые значения
beginner95  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 149
Пользователь №: 30731
На форуме: 5 лет, 7 месяцев, 12 дней
Карма:




Добрый день! С 5 утра ломаю голову над тем как удалить из массива массив в котором значения пустые.
<?php
error_reporting(E_ALL);
if(isset($_POST['submit'])){
$fio = $_POST['values'];
if(!empty($fio)){

echo "<pre>"; print_r($fio); echo "</pre>";

$values = array();

foreach($fio as $value){
array_map("mysql_real_escape_string", $value);
$values[] = "('". implode("', '", $value)."')";
}
$insert = implode("," , $values).";";

echo "<pre>"; print_r ($insert); echo "</pre><hr>";
}
}

?>
<form action="#" method="POST">
<table
border="1">
<tr>
<td>
Фамилия</td><td><input type="text" name="values[0][lastName]" /></td>
<td>
Фамилия</td><td><input type="text" name="values[1][lastName]" /></td>
<td>
Фамилия</td><td><input type="text" name="values[2][lastName]" /></td>
</tr>
<tr>
<td>
Имя</td><td><input type="text" name="values[0][firstName]" /></td>
<td>
Имя</td><td><input type="text" name="values[1][firstName]" /></td>
<td>
Имя</td><td><input type="text" name="values[2][firstName]" /></td>
</tr>
<tr>
<td>
Очества</td><td><input type="text" name="values[0][middleName]" /></td>
<td>
Очества</td><td><input type="text" name="values[1][middleName]" /></td>
<td>
Очества</td><td><input type="text" name="values[2][middleName]" /></td>
</tr>
<tr><td
colspan="6" align="center"><input type="submit" name="submit" /></td></tr>
</table>
</form>


К примеру введем первого, и второго пользователя а третью форму вводу оставим пустую. Получим такой результат.
Array
(
[0] => Array
(
[lastName] => Иванов
[firstName] => Иван
[middleName] => Иванович
)

[1] => Array
(
[lastName] => Петров
[firstName] => Петер
[middleName] => Петрович
)

[2] => Array
(
[lastName] =>
[firstName] =>
[middleName] =>
)

)


Как же из массива удалить весь массив в котором значения Ф.И.О пустые в нашем случай это массив

Array
(
...

...

[2] => Array
(
[lastName] =>
[firstName] =>
[middleName] =>
)

)


пробовал unset'ом не смог так и придумать логику для выполнения этой задачи может кто поможет.


--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2066
Пользователь №: 36605
На форуме: 4 года, 5 месяцев, 4 дня
Карма: 113




покажи свой код, а там подскажу где ошибка и как работает тот или иной механизм языка
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



c начала 2017 года в Новосибирске.
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26438
Пользователь №: 21350
На форуме: 7 лет, 4 месяца, 6 дней
Карма: 739




да не надо там ничё очищать.

просто когда будешь в БД писать - там и гляди чтоб все 3 поля из группы не были пустыми (ну или 2 - я ж не знаю что там обязательное)


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql (TSql, BI OLAP, MDX), Git, SVN, CodeIgnater, Yii 2, JiRA, Redmine, Bitbucket, Composer
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5662
Пользователь №: 35718
На форуме: 4 года, 8 месяцев
Карма: 176




beginner95, форму я так понимаю вы руками рисуете?
Подозреваю, что вам не особо надо вникать в тонкости программирования, вам важнее конечный результат. Хотите готовый код?


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



c начала 2017 года в Новосибирске.
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26438
Пользователь №: 21350
На форуме: 7 лет, 4 месяца, 6 дней
Карма: 739




Цитата
Хотите готовый код?


user posted image


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql (TSql, BI OLAP, MDX), Git, SVN, CodeIgnater, Yii 2, JiRA, Redmine, Bitbucket, Composer
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
beginner95  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 149
Пользователь №: 30731
На форуме: 5 лет, 7 месяцев, 12 дней
Карма:




Цитата (Игорь_Vasinsky @ 25.11.2015 - 16:17)
да не надо там ничё очищать.

просто когда будешь в БД писать - там и гляди чтоб все 3 поля из группы не были пустыми (ну или 2 - я ж не знаю что там обязательное)

Дело в том что, если заполнено хоть одна группа то запись должна проходить, но если не очищать то в базу летят пустые значения. А при записи в БД не получается отсекать пустые значения, мне казалось проще будет если удалить из массива пустой массив.


--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
beginner95  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 149
Пользователь №: 30731
На форуме: 5 лет, 7 месяцев, 12 дней
Карма:




Valick Вникать в тонкости программирования очень хочется, но тут бы как бы вам сказать сделать себе рабочий сырой вариант а потом уже усовершенствовать по мере приобретений знаний, а что плохого в том что я форму рисую руками?


--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



c начала 2017 года в Новосибирске.
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26438
Пользователь №: 21350
На форуме: 7 лет, 4 месяца, 6 дней
Карма: 739




на этом этапе

Цитата
$values[] = "('". implode("', '", $value)."')";


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql (TSql, BI OLAP, MDX), Git, SVN, CodeIgnater, Yii 2, JiRA, Redmine, Bitbucket, Composer
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
beginner95  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 149
Пользователь №: 30731
На форуме: 5 лет, 7 месяцев, 12 дней
Карма:




bestxp
К сожалению к дельному варианту в коде не пришел, в начале просто.
array_diff методом расхождения попробовал.


foreach($fio as $value){

$array = array_diff($value, array(''));
array_map("mysql_real_escape_string", $array);
$values[] = "('". implode("', '", $array)."')";
}
$insert = implode("," , $values).";";


echo "<pre>";
print_r ($insert);
echo "</pre><hr>";

результат получается пустым.

В таком формате

(''),(''),('');

Тогда пришла мысль лучше будет удалить весь массив из массива если значения пустые у данного массива, это было бы самое то по крайне мере мне так кажется.


--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



c начала 2017 года в Новосибирске.
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26438
Пользователь №: 21350
На форуме: 7 лет, 4 месяца, 6 дней
Карма: 739




Цитата
$array = array_diff($value, array(''));

ЧЁ ЭТО????
как ты дальше это используешь в коде?

ты тут нам кузьку не вяляй!


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql (TSql, BI OLAP, MDX), Git, SVN, CodeIgnater, Yii 2, JiRA, Redmine, Bitbucket, Composer
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5662
Пользователь №: 35718
На форуме: 4 года, 8 месяцев
Карма: 176




foreach($fio as $value){
if($value[0]){
$map = array_map("mysql_real_escape_string", $value);
$values[] = "('". implode("', '", $map)."')";
}
}


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
beginner95  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 149
Пользователь №: 30731
На форуме: 5 лет, 7 месяцев, 12 дней
Карма:




Игорь_Vasinsky Главное чтобы у меня ша мозг не взорвался, ну как я понял проверяю расхождение массива $value с пустым массивом array(''), по вашей реакции понятно это совсем не то что нужно было тут sad.gif


--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



c начала 2017 года в Новосибирске.
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26438
Пользователь №: 21350
На форуме: 7 лет, 4 месяца, 6 дней
Карма: 739




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

вон - выше результат, но я не совсем уверен в его корректности, разные версии PHP и т.д.

я бы написал так

foreach($fio as $value){
$value = array_map("trim", $value);

if(!empty($value) || $value == ''){
$map = array_map("mysql_real_escape_string", $value);
$values[] = "('". implode("', '", $map)."')";
}
}


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql (TSql, BI OLAP, MDX), Git, SVN, CodeIgnater, Yii 2, JiRA, Redmine, Bitbucket, Composer
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
beginner95  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 149
Пользователь №: 30731
На форуме: 5 лет, 7 месяцев, 12 дней
Карма:




Игорь_Vasinsky Какой результат я получу выполнении предложенного вами вариант? Просто происходит какая то интересная итрация ))), можете просто описать вашу мысль предложенного варианта rolleyes.gif


--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



c начала 2017 года в Новосибирске.
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26438
Пользователь №: 21350
На форуме: 7 лет, 4 месяца, 6 дней
Карма: 739




там очепятка в коде - нужно

  if(!empty($value[0]) || $value[0] == '')


каждая группа полей - содержит по 3 поля.
Все эти группы лежат $_POST в виде многомерного ассоц. массива

во время работы цикла - ты собираешь 2ю часть SQL запроса

foreach($fio as $value){
//на всяк случай почистим все 3 поля из группы - если ввели пробелы
$value = array_map("trim", $value);
//если первое поле группы не пусто - то добавляем в запрос
if(!empty($value[0]) || $value[0] == ''){
$map = array_map("mysql_real_escape_string", $value);
$values[] = "('". implode("', '", $map)."')";
}
}


в итоге в SQL зстроку запроса попадут только те группы - у которых первое поле в группе заполнено.


Включай уже свою голову, простейшую опечатку не можешь побороть.

если тебе надо все 3 поля в группе контролировать - меняй условие на 3 поля


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql (TSql, BI OLAP, MDX), Git, SVN, CodeIgnater, Yii 2, JiRA, Redmine, Bitbucket, Composer
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса