То, что вы видите, в основном является дизайнерским решением. Это работает 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);
Вы можете добавить их в массив и зациклить массив (или сохранить их в массиве и зациклить там).
$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.
Я предполагаю, что вы можете использовать следующий подход - определить доступные ключи и перебрать их, а перебрать - собрать некоторые данные, например, так:
$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]);
}
}
Это приводит к тем же результатам:
$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
}