PHP — Сложность работы с массивом для динамического создания

#php #arrays #array-push

#php #массивы #массив-push

Вопрос:

Мне нужен массив, подобный этому:

 array('quadra_id'=>$quadra_id);
  

Дело в том, что я буду создавать его динамически, в соответствии с тем, что отправляется формой.

 $where = array();

if($quadra_id != 0) {
   array_push($where, $quadra_id);
}
  

Это возвращает мне это:

 array
  0 => string '8762' (length=3)
  

И мне нужно это:

 array
  'quadra_id' => string '8762' (length=3)
  

Ответ №1:

array_push добавляет новый элемент в массив с числовым индексом, в то время как вам нужен строковый индекс. Итак, вы действительно хотите это сделать:

 $where['quadra_id'] = $quadra_id;
  

Ответ №2:

Заменить:

 array_push($where, $quadra_id);
  

С:

 $where['quadra_id'] = $quadra_id;
  

Ответ №3:

вам просто нужно указать индекс, я бы сделал это таким образом

 $where = array();

if($quadra_id != 0) {
   $where['quadra_id']= $quadra_id;
}
  

Ответ №4:

Замените эту строку…

array_push($where, $quadra_id);

…со следующим:

$where ['quadra_id'] = $quadra_id;

Ответ №5:

То, что вы ищете, это:

 array_push($where, array('quadra_id'=>$quadra_id));
  

Если будет только один, вам действительно следует просто сделать:

 if($quadra_id != 0) {    
  $where = array('quadra_id'=>$quadra_id);
}
  

Ответ №6:

Вы можете установить $where равным $_POST. Если у вас есть другие входные данные формы, которых не должно быть в $where, вы можете отложить их в сторону, поместив их в массив в имени ввода, вот так.

 <input name='where[quadra_id]' value='' />
  

В этом случае значение $where будет равно $_POST[‘where’].