Динамически создавать PHP, если условие

То, что вы видите, в основном является дизайнерским решением. Это работает JavaScript. Например, PHP аналогичен в том смысле, что доступ к не существующему индексу - это предупреждение, а не жесткая ошибка. Есть, вероятно, другие языковые примеры, которые ведут себя таким образом.

Чтобы обойти это:

Обычный способ действительно использует b = a[0] || "default", однако остерегайтесь поведения с ложью, но не неопределенного значения, например:

var myarray = [ 0, null, "" ];

var a = myarray[0] || "default[0]";
var b = myarray[1] || "default[1]";
var c = myarray[2] || "default[2]";
var d = myarray[3] || "default[3]";

console.log(a, b, c, d);

Если вы хотите строго проверить неопределенные значения, если использовать значения фальши, должны быть явными:

    var myarray = [ 0, null, "" ];

    var a = myarray[0] !== undefined ? myarray[0] : "default[0]";
    var b = myarray[1] !== undefined ? myarray[1] : "default[1]";
    var c = myarray[2] !== undefined ? myarray[2] : "default[2]";
    var d = myarray[3] !== undefined ? myarray[3] : "default[3]";

    console.log(a, b, c, d);

0
задан adam78 6 April 2019 в 21:03
поделиться

3 ответа

Вы можете добавить их в массив и зациклить массив (или сохранить их в массиве и зациклить там).

$categoryId = 

Вы можете добавить их в массив и зациклить массив (или сохранить их в массиве и зациклить там).

[110]

Поскольку я использую array_filter, он не будет проверять пустое значение, которое вернет false.

REQUEST['category_id']; $locationId =

Вы можете добавить их в массив и зациклить массив (или сохранить их в массиве и зациклить там).

[110]

Поскольку я использую array_filter, он не будет проверять пустое значение, которое вернет false.

REQUEST['location_id']; $statusId =

Вы можете добавить их в массив и зациклить массив (или сохранить их в массиве и зациклить там).

[110]

Поскольку я использую array_filter, он не будет проверять пустое значение, которое вернет false.

REQUEST['status_id']; // This can be done in different ways, I kept your "style" since you may have other reasons to extract the values $arr =["categoryId" => $categoryId, "locationId" => $locationId, "statusId" => $statusId]; $arr = array_filter($arr); // remove empty values $return = true; foreach($arr as $val){ if (!isInTaxonomy($recordId, $val)) { $return = false; } } if($return){ // Do something // (All is true) }

Поскольку я использую array_filter, он не будет проверять пустое значение, которое вернет false.

0
ответ дан Andreas 6 April 2019 в 21:03
поделиться

Я предполагаю, что вы можете использовать следующий подход - определить доступные ключи и перебрать их, а перебрать - собрать некоторые данные, например, так:

$keys = ['category_id', 'location_id', 'status_id'];

$operationAllowed = true;
foreach ($keys as $key) {
    if (!empty(

Я предполагаю, что вы можете использовать следующий подход - определить доступные ключи и перебрать их, а перебрать - собрать некоторые данные, например, так:

[110]REQUEST[$key])) { $operationAllowed = $operationAllowed && isInTaxonomy($recordId,

Я предполагаю, что вы можете использовать следующий подход - определить доступные ключи и перебрать их, а перебрать - собрать некоторые данные, например, так:

[110]REQUEST[$key]); } }
0
ответ дан u_mulder 6 April 2019 в 21:03
поделиться

Это приводит к тем же результатам:

$categoryId = 

Это приводит к тем же результатам:

[110]

Он разделен линиями, каждая переменная является строкой. Если переменная пуста, строка оценивается как true (без проверки isInTaxonomy) и переходит к следующей, если переменная не пуста, то проверяется второе условие, isInTaxonomy оценивается, если оно true ], проверка продолжается на следующей строке, если она false, она останавливается.


Редактировать: вы также можете использовать этот подход в цикле for

$args = ['category_id', 'location_id', 'status_id'];

$valid = true;
foreach ($args as $arg) {
    $valid &= empty(

Это приводит к тем же результатам:

[110]

Он разделен линиями, каждая переменная является строкой. Если переменная пуста, строка оценивается как true (без проверки isInTaxonomy) и переходит к следующей, если переменная не пуста, то проверяется второе условие, isInTaxonomy оценивается, если оно true ], проверка продолжается на следующей строке, если она false, она останавливается.


Редактировать: вы также можете использовать этот подход в цикле for

[111]REQUEST[$arg]) || isInTaxonomy($recordId,

Это приводит к тем же результатам:

[110]

Он разделен линиями, каждая переменная является строкой. Если переменная пуста, строка оценивается как true (без проверки isInTaxonomy) и переходит к следующей, если переменная не пуста, то проверяется второе условие, isInTaxonomy оценивается, если оно true ], проверка продолжается на следующей строке, если она false, она останавливается.


Редактировать: вы также можете использовать этот подход в цикле for

[111]REQUEST[$arg]); } if($valid) { // Do Something }
REQUEST['category_id']; $locationId =

Это приводит к тем же результатам:

[110]

Он разделен линиями, каждая переменная является строкой. Если переменная пуста, строка оценивается как true (без проверки isInTaxonomy) и переходит к следующей, если переменная не пуста, то проверяется второе условие, isInTaxonomy оценивается, если оно true ], проверка продолжается на следующей строке, если она false, она останавливается.


Редактировать: вы также можете использовать этот подход в цикле for

$args = ['category_id', 'location_id', 'status_id'];

$valid = true;
foreach ($args as $arg) {
    $valid &= empty(

Это приводит к тем же результатам:

[110]

Он разделен линиями, каждая переменная является строкой. Если переменная пуста, строка оценивается как true (без проверки isInTaxonomy) и переходит к следующей, если переменная не пуста, то проверяется второе условие, isInTaxonomy оценивается, если оно true ], проверка продолжается на следующей строке, если она false, она останавливается.


Редактировать: вы также можете использовать этот подход в цикле for

[111]REQUEST[$arg]) || isInTaxonomy($recordId,

Это приводит к тем же результатам:

[110]

Он разделен линиями, каждая переменная является строкой. Если переменная пуста, строка оценивается как true (без проверки isInTaxonomy) и переходит к следующей, если переменная не пуста, то проверяется второе условие, isInTaxonomy оценивается, если оно true ], проверка продолжается на следующей строке, если она false, она останавливается.


Редактировать: вы также можете использовать этот подход в цикле for

[111]REQUEST[$arg]); } if($valid) { // Do Something }
REQUEST['location_id']; $statusId =

Это приводит к тем же результатам:

[110]

Он разделен линиями, каждая переменная является строкой. Если переменная пуста, строка оценивается как true (без проверки isInTaxonomy) и переходит к следующей, если переменная не пуста, то проверяется второе условие, isInTaxonomy оценивается, если оно true ], проверка продолжается на следующей строке, если она false, она останавливается.


Редактировать: вы также можете использовать этот подход в цикле for

$args = ['category_id', 'location_id', 'status_id'];

$valid = true;
foreach ($args as $arg) {
    $valid &= empty(

Это приводит к тем же результатам:

[110]

Он разделен линиями, каждая переменная является строкой. Если переменная пуста, строка оценивается как true (без проверки isInTaxonomy) и переходит к следующей, если переменная не пуста, то проверяется второе условие, isInTaxonomy оценивается, если оно true ], проверка продолжается на следующей строке, если она false, она останавливается.


Редактировать: вы также можете использовать этот подход в цикле for

[111]REQUEST[$arg]) || isInTaxonomy($recordId,

Это приводит к тем же результатам:

[110]

Он разделен линиями, каждая переменная является строкой. Если переменная пуста, строка оценивается как true (без проверки isInTaxonomy) и переходит к следующей, если переменная не пуста, то проверяется второе условие, isInTaxonomy оценивается, если оно true ], проверка продолжается на следующей строке, если она false, она останавливается.


Редактировать: вы также можете использовать этот подход в цикле for

[111]REQUEST[$arg]); } if($valid) { // Do Something }
REQUEST['status_id']; if( (empty($categoryId) || isInTaxonomy($recordId, $categoryId)) && (empty($locationId) || isInTaxonomy($recordId, $locationId)) && (empty($statusId) || isInTaxonomy($recordId, $statusId))) { // Do Something }

Он разделен линиями, каждая переменная является строкой. Если переменная пуста, строка оценивается как true (без проверки isInTaxonomy) и переходит к следующей, если переменная не пуста, то проверяется второе условие, isInTaxonomy оценивается, если оно true ], проверка продолжается на следующей строке, если она false, она останавливается.


Редактировать: вы также можете использовать этот подход в цикле for

$args = ['category_id', 'location_id', 'status_id'];

$valid = true;
foreach ($args as $arg) {
    $valid &= empty(

Это приводит к тем же результатам:

[110]

Он разделен линиями, каждая переменная является строкой. Если переменная пуста, строка оценивается как true (без проверки isInTaxonomy) и переходит к следующей, если переменная не пуста, то проверяется второе условие, isInTaxonomy оценивается, если оно true ], проверка продолжается на следующей строке, если она false, она останавливается.


Редактировать: вы также можете использовать этот подход в цикле for

[111]REQUEST[$arg]) || isInTaxonomy($recordId,

Это приводит к тем же результатам:

[110]

Он разделен линиями, каждая переменная является строкой. Если переменная пуста, строка оценивается как true (без проверки isInTaxonomy) и переходит к следующей, если переменная не пуста, то проверяется второе условие, isInTaxonomy оценивается, если оно true ], проверка продолжается на следующей строке, если она false, она останавливается.


Редактировать: вы также можете использовать этот подход в цикле for

[111]REQUEST[$arg]); } if($valid) { // Do Something }
0
ответ дан Toni Almeida 6 April 2019 в 21:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: