Возможно ли, что выражение в объявлении массива … возможно?

Возможный дубликат:
Условный элемент внутри массива (…)

Вот мой код

$product_option_value_data[] = array( 'product_option_value_id' => $product_option_value['product_option_value_id'], if (isset($product_option_value_description_query->row['smallimage'])) { 'smallimage' => $product_option_value_description_query->row['smallimage'], } 'name' => $product_option_value_description_query->row['name'], 'price' => $product_option_value['price'], 'prefix' => $product_option_value['prefix'] ); 

я могу сделать что-то вроде этого ….

вот моя ошибка

  Parse error: syntax error, unexpected T_IF, expecting ')' in /Users/mattelhotiby/Sites/posnation/shop_pos/catalog/model/catalog/product.php on line 419 

На самом деле я сделал это

 if (isset($product_option_value_description_query->row['smallimage'])) { $smallimage = $product_option_value_description_query->row['smallimage']; }else{ $smallimage = ''; } $product_option_value_data[] = array( 'product_option_value_id' => $product_option_value['product_option_value_id'], 'smallimage' => $smallimage, 'name' => $product_option_value_description_query->row['name'], 'price' => $product_option_value['price'], 'prefix' => $product_option_value['prefix'] ); 

Но я все еще хочу знать, что существует способ сделать, если внутри этого объявления массива

Solutions Collecting From Web of "Возможно ли, что выражение в объявлении массива … возможно?"

Не то, если, но похожее возможно:

 $product_option_value_data[] = array( 'product_option_value_id' => $product_option_value['product_option_value_id'], 'smallimage' => (isset($product_option_value_description_query->row['smallimage'])) ? $product_option_value_description_query->row['smallimage'] : null, 'name' => $product_option_value_description_query->row['name'], 'price' => $product_option_value['price'], 'prefix' => $product_option_value['prefix'] ); 

Синтаксис:

 (<statement> ? <case: true> : <case: false>) (1 == 1 ? 'yes!' : 'PHP is wrong') 

Может быть, этот?

 $array = array( 'key1' => 'value1', 'key2' => 'value2', ); if (isset(...)) { $array['key3'] = 'value3'; } $multiarray[] = $array; 

В этом случае единственным возможным вариантом является использование следующего синтаксиса:

 'smallimage' => (isset($product_option_value_description_query->row['smallimage']) ? isset($product_option_value_description_query->row['smallimage']) : NULL) 

Хотя это имеет побочный эффект, если ваше состояние не работает, у вас будет ключ «smallimage» со значением NULL

Нет, вы можете сделать это встроенным или внешним:

 $product_option_value_data[] = array( 'product_option_value_id' => $product_option_value['product_option_value_id'], 'smallimage' => @$product_option_value_description_query->row['smallimage'], 'name' => $product_option_value_description_query->row['name'], 'price' => $product_option_value['price'], 'prefix' => $product_option_value['prefix'] ); 

Или если smallimage не может быть пустым:

 $product_option_value_data[] = array( 'product_option_value_id' => $product_option_value['product_option_value_id'], 'name' => $product_option_value_description_query->row['name'], 'price' => $product_option_value['price'], 'prefix' => $product_option_value['prefix'] ); if (isset($product_option_value_description_query->row['smallimage'])) { $product_option_value_data['smallimage'] = $product_option_value_description_query->row['smallimage']; } 

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

 $des = array(...); if(...) $des["..."] = "..."; 

Насколько я знаю, нет. Но почему бы вам это сделать, это плохая идея. Вы должны только устанавливать переменные в массиве, вне зависимости от вас.

 $data = array( 'product_option_value_id' => $product_option_value['product_option_value_id'], 'name' => $product_option_value_description_query->row['name'], 'price' => $product_option_value['price'], 'prefix' => $product_option_value['prefix'] ); if (isset($product_option_value_description_query->row['smallimage'])) { $data['small_image'] = $product_option_value_description_query->row['smallimage']; } $product_option_value_data[] = $data; 

NO . Просто как тот.

Делать:

 $product_option_value_data[] = array( 'product_option_value_id' => $product_option_value['product_option_value_id'], 'name' => $product_option_value_description_query->row['name'], 'price' => $product_option_value['price'], 'prefix' => $product_option_value['prefix'] ); if (isset($product_option_value_description_query->row['smallimage'])) { $product_option_value_data[count($product_option_value_data) - 1]['smallimage'] = $product_option_value_description_query->row['smallimage'], // I'm not sure if you meant to have that [] in your declaration above // You may need to drop it, in which case the line would be: // $product_option_value_data['smallimage'] = $product_option_value_description_query->row['smallimage'], } 

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