Если API дает следующий ответ, принимая во внимание array [0] и array [1], иногда может быть значение MX, а иногда может быть значение AR:
["published_sites"]=>
array(3) {
[0]=>
object(stdClass)#1565 (5) {
["site"]=>
string(2) "MX"
["sale_price"]=>
int(956)
["status"]=>
string(6) "active"
["item_id"]=>
string(12) "MLM724808"
["url"]=>
string(108) "http://articulo.mercadolibre.com.mx/MLM-722808-apple-apple-watch-series-4-gps-cellular-44mm-space-bla-_JM"
}
[1]=>
object(stdClass)#1569 (3) {
["site"]=>
string(2) "AR"
["sale_price"]=>
int(956)
["status"]=>
string(6) "active"
["item_id"]=>
string(12) "MLM724808"
["url"]=>
string(108) "http://articulo.mercadolibre.com.ar/MLM-722808-apple-apple-watch-series-4-gps-cellular-44mm-space-bla-_JM"
}
и для сохранения в базе данных вы создаете массив со следующими полями для присвоения значений для AR и для MX:
Channels::updateOrCreate(['mpid' => $response->mpid], [
'mpid' => $response->mpid,
'published_site_ar_item_id' => $assign item_id for AR, eg: $item_ar_assign
'published_site_mx_item_id' => $assign item_id for MX,
Принимая во внимание, что Array может использовать только тернарный оператор для условных выражений, я пробовал использовать следующую структуру, но использование Or для нескольких условий не сработало. ->
item_ar_assign = ($response->published_sites['0']->site == 'AR' ?: $response->published_sites['0']->item_id)
||($response->published_sites['1']->site == 'AR' ?: $response->published_sites['1']->item_id)
||($response->published_sites['2']->site == 'AR' ? : $response->published_sites['2']->item_id)
Возможен ли этот подход тернарного оператора + несколько условий с массивами?
(примечание: я читал SO для дубликатов, таких как Тернарный оператор с несколькими условиями, но я не думаю такой же подход.)
?:
он либо вернет левую часть (что верно или неверно, как вы делаете== 'AR'
), либо часть, следующую за:
- вы имеете в виду$response->published_sites['0']->site == 'AR' ? 'AR': $response->published_sites['0']->item_id
- person Nigel Ren   schedule 26.09.2019