2015-01-30 3 views
-2

Как добавить условие внутри массива php?Ошибка анализа: синтаксическая ошибка, неожиданный «if» (T_IF), expecting ')'

Вот массив

$content['custom_fields'] = array(
    array("key" => "_yoast_wpseo_focuskw", "value" => $_POST["title"]), 
    array("key" => "_yoast_wpseo_metadesc", "value" => $_POST["titleenfa"]), 
    array("key" => "_yoast_wpseo_metakeywords", "value" => $_POST["metakey"]), 
    if($_POST["link128"]){ 
     array("key" => "_link128", "value" => "field_54b398292c295"), 
     array("key" => "link128", "value" => $_POST["link128"]), 
    } 
    if($_POST["link256"]){ 
     array("key" => "_link256", "value" => "field_54b398092c294"), 
     array("key" => "link256", "value" => $_POST["link256"]), 
    } 
    if($_POST["link320"]){   
     array("key" => "_link320", "value" => "field_54b3965495d27"), 
     array("key" => "link320", "value" => $_POST["link320"]), 
    } 
    array("key" => "country", "value" => "USA") 
); 

Но я получаю ошибку PHP Синтаксическая, почему я могу добавить условие внутри массива, что же случилось ??:

Parse error: syntax error, unexpected 'if' (T_IF), expecting ')'

+0

Вы забыли закрыть ")" перед первым оператором T_IF. Проверьте это. Вы не можете включить этот оператор в объявление массива – bcesars

+1

либо условно добавить записи позже, либо отфильтровать (удалить) те, которые вам не нужны. –

+0

Как указано в Rizier123, вы можете использовать 'array_push' для добавления значений * if * позже в ваш массив. –

ответ

0

Спасибо всем

 $content['custom_fields'] = array(
     array("key" => "_yoast_wpseo_focuskw", "value" => $_POST["title"]), 
     array("key" => "_yoast_wpseo_metadesc", "value" => $_POST["titleenfa"]), 
     array("key" => "_yoast_wpseo_metakeywords", "value" => $_POST["metakey"]) 
     ); 
     if($_POST["link128"]){ 
      array_push($content['custom_fields'], array("key" => "_link128", "value" => "field_54b398292c295")); 
      array_push($content['custom_fields'], array("key" => "link128", "value" => $_POST["link128"])); 
     }  
     if($_POST["link256"]){ 
      array_push($content['custom_fields'], array("key" => "_link256", "value" => "field_54b398092c294")); 
      array_push($content['custom_fields'], array("key" => "link256", "value" => $_POST["link256"])); 
     } 
     if($_POST["link320"]){ 
      array_push($content['custom_fields'], array("key" => "_link320", "value" => "field_54b3965495d27")); 
      array_push($content['custom_fields'], array("key" => "link320", "value" => $_POST["link320"])); 
     } 
1

Вы не можете написать заявление if в объявлении массива, но вы можете использовать оператор ternary следующим образом:

(Здесь у вас есть в любом случае запись)

array("key" => "link128", "value" => (!empty($_POST["link128"])?$_POST["link128"]:"")) 

ИЛИ вы можете использовать array_push() так:

Где это PUSH один или несколько элементов в конец вашего массива

if($_POST["link128"]) 
    array_push($array, $_POST["link128"]); 
+1

это обязательно добавит запись. Я сомневаюсь, что это ему нужно. –

+0

@ KarolyHorvath Добавлено другое возможное решение, также он просто может проверить, пуст ли он, когда он использует его – Rizier123

+0

true .. объясните, и я удалю нижний предел. –

0

Try, чтобы изменить код массива, как следующий .... .

$custom_array = array(
    array("key" => "_yoast_wpseo_focuskw", "value" => $_POST["title"]), 
    array("key" => "_yoast_wpseo_metadesc", "value" => $_POST["titleenfa"]), 
    array("key" => "_yoast_wpseo_metakeywords", "value" => $_POST["metakey"]  
)); 
if($_POST["link128"]){ 
    $custom_array = array_merge($custom_array,array(
     array("key" => "_link128", "value" => "field_54b398292c295"), 
     array("key" => "link128", "value" => $_POST["link128"]), 
    )); 
} 
if($_POST["link256"]){ 
    $custom_array = array_merge($custom_array,array(
     array("key" => "_link256", "value" => "field_54b398092c294"), 
     array("key" => "link256", "value" => $_POST["link256"]), 
    )); 
} 
if($_POST["link320"]){ 
    $custom_array = array_merge($custom_array,array(
     array("key" => "_link320", "value" => "field_54b3965495d27"), 
     array("key" => "link320", "value" => $_POST["link320"]), 
    )); 

}

//And finally 
$content['custom_fields'] = array_merge($custom_array,array(
    array("key" => "country", "value" => "USA") 
)); 
0

Вы также могли бы написать, что, как:

$x = array(); 

$x[] = array("key" => "_yoast_wpseo_focuskw", "value" => $_POST["title"]); 
$x[] = array("key" => "_yoast_wpseo_metadesc", "value" => $_POST["titleenfa"]); 
$x[] = array("key" => "_yoast_wpseo_metakeywords", "value" => $_POST["metakey"]); 

if($_POST["link128"]){ 
    $x[] = array("key" => "_link128", "value" => "field_54b398292c295"); 
    $x[] = array("key" => "link128", "value" => $_POST["link128"]); 
} 
if($_POST["link256"]){ 
    $x[] = array("key" => "_link256", "value" => "field_54b398092c294"); 
    $x[] = array("key" => "link256", "value" => $_POST["link256"]); 
} 
if($_POST["link320"]){   
    $x[] = array("key" => "_link320", "value" => "field_54b3965495d27"); 
    $x[] = array("key" => "link320", "value" => $_POST["link320"]); 
} 

$x[] = array("key" => "country", "value" => "USA") 

$content['custom_fields'] = $x; 

$x[] = $y означает «толкать $y на конец массива $x

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