2015-02-12 2 views
-1

Есть ли способ сократить этот код? Это просто кажется неуклюжим. Ive пробовал несколько сокращенных идей с тройными операторами и не мог заставить ничего работать. Так вот что я придумал. Любые мысли были бы оценены.Укорачивать код для удаления элемента массива с условным значением в php pdo

$query = $db->prepare($sql); 
$array = array(':page_parent' => $parent_id, ':page_active' => $active); 

if(is_null($active)): 
    unset($array[':page_active']); 
endif; 

$query->execute($array); 
+0

Вы можете использовать '$ array = array_filter ($ array);' для удаления пустых значений из вашего массива – Rizier123

+0

@ Кто-то проголосовал за мой вопрос: почему кто-то проголосовал бы за мой вопрос? На другой пост здесь не было ответа на Stackoverflow. Весь смысл этого сайта - получить ответы на вопросы. Я не просил кого-то сделать для меня свою работу. Если бы я знал ответ, я бы не спросил. Если вы не хотите помогать, тогда не делайте этого. И я уверен, что у вас много вещей, которые вы не знаете, которые кажутся мелочными или простыми для других. Пфф. Что за придурок. – rprincejr

ответ

0
$query = $db->prepare($sql); 
$array = array(':page_parent' => $parent_id, ':page_active' => $active); 
//array_filter will remove null and false array element 
$array = array_filter($array); 
$query->execute($array); 
+0

Я никогда не использовал массивы в php до тех пор, пока я не начал работать в PDO. Таким образом, функция array_filter не была чем-то, что приходило в голову. Спасибо за помощь! – rprincejr

0

Почему вы не можете проверить, прежде чем добавить его в массив?

$query = $db->prepare($sql); 
$array = array(':page_parent' => $parent_id); 
if(! is_null($active)) 
{ 
    $array[':page_active'] = $active; 
} 
$query->execute($array); 

Хотя это же количество строк, это более эффективно, как это имеет дело только с активным, если у него есть что-то в нем, а не добавлять его, а затем удалить его, если нет ничего в нем.

+0

Thats a vaild point Styphon. Спасибо за точку зрения. – rprincejr

 Смежные вопросы

  • Нет связанных вопросов^_^