Возможный дубликат:
Условный элемент внутри массива (…)
Вот мой код
$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'] );
Но я все еще хочу знать, что существует способ сделать, если внутри этого объявления массива
Не то, если, но похожее возможно:
$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'], }
Даже если вы можете сделать это, гораздо удобнее добавлять условное выражение после или до массива.