可能重复:
数组(…(构造中的条件元素
这是我的代码
$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']
);
但我仍然想知道是否有一种方法可以在这个数组声明
不是if,但类似的事情是可能的:
$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)
尽管这有副作用,但如果条件失败,您将获得值为NULL 的"smallimage"密钥
您可以定义数组,然后添加一些项:
$des = array(...);
if(...)
$des["..."] = "...";
否,您可以内联或外部执行:
$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'];
}
据我所知,没有。但你为什么要这么做,这是个坏主意。你应该只在数组中设置变量,你在外面做逻辑运算吗。
$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;
否。就这么简单。
Do:
$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'],
}
即使可以这样做,在数组之后或之前添加条件也更可读。