mrusklon
@mrusklon
Не получается? Яростно гугли!

Как валидировать данные в многомерном массиве на php?

Всем бобра )
Приходит мне в $_POST вот такой массив (он будет гораздо больше в последующем)
b6sYdVs.png
эти данные идут с формы аля "табель учета рабочего времени" , там поля:
(date | fio | mestoRaboty | dogovor | object | vidarb | hours )
мне надо оперировать данными только теми у которых hours не указан или указан 0 , значит надо как то убрать в каждом массиве те поля которые относятся к пустому значению , в примере на картинке выше выходит весь глобальный массив должен быть проигнорирован , потому что там везде в hours пусто
А вот в таком случае
9FSB5ll.png
надо оставить только ячейки № 3 ну или [2] если учесть что это массив

как мне такое реализовать?
  • Вопрос задан
  • 157 просмотров
Решения вопроса 4
kawabanga
@kawabanga
Где индексы нормальные? Как понять что
date[0] будет относиться к dogovor[5] ?

Ваш POST запрос должен изначально приходить в читаемом виде.
К примеру:
[
[
'date'=>'2010-01-01',
'hours'=>'3'
], 
[
'date'=>'2012-01-01',
'hours'=>'1'
], 
[
'date'=>'2010-01-01',
'hours'=>''
], 

]


А уже его разобрать не составит труда.
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
for ($i = 0; $i < count($_POST['date']); $i++) {
  if ($_POST['hours'][$i] ... здесь ваши условия) {
    Что делать при выполнении условий
  }
}

Но гораздо лучше валидировать данные на клиенте и не отправлять лишнее.
Ответ написан
@levantez
var $res = [];
if ($_POST['date'])
    foreach ($_POST['date'] as $key => $dt) 
    {
        $hours = @$_POST['hours'][$key];
        if (!$hours) 
        {
            $fio = $_POST['fio'][$key];
            $res[] = ['fio'=>$fio, 'date'=>$dt]; //ну тут смотря какие ячейки надо оставить
            //..........
        }
    }
print_r($res);

как-то так
Ответ написан
Комментировать
AnatolTh
@AnatolTh
Full Stack Developer
$data = [];
foreach ($_POST['hours'] as $k => $v) {
  if ( $v != '' AND $v != 0 ) {
    $res = [];
    $res['hours'] = $v;
    $res['fio']= $_POST['fio'][$k];
    $res['mestoRaboty']= $_POST['mestoRaboty'][$k];
    $res['dogovor']= $_POST['dogovor'][$k];
    $res['object']= $_POST['object'][$k];
    $res['vidarb']= $_POST['vidarb'][$k];
    $res['date']= $_POST['date'][$k];
    $data[] = $res;
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы