Посмотрите, хотите ли вы этого. Я изменил mainPic
и content
. Этот синтаксис containerStyle={{ paddingBottom: 0 }}
не выглядит правильным, даже получает предупреждение в браузере. Возможно, вы хотите изменить style
или classes={{root}}
API CardActionArea.
mainPic: {
width: 300,
marginBottom: 0,
padding: 0,
borderRadius: '0 0 4px 4px',
},
content: {
height: 225,
padding: "0 !important",
'&:last-child': {
paddingBottom: "0 !important",
},
}
isset () очень быстр с обычными переменными, но у Вас есть массив здесь. Алгоритм карты хеша для массивов быстр, но это, все еще занимает больше времени, чем выполнение ничего.
Теперь, первая форма может быть быстрее, если у Вас есть больше значений, которые установлены, чем те, которые не являются, просто потому что она просто ищет хеш, не выбирая или устанавливая значение. Так, это могло быть точкой расхождения: выберите первую форму, если у Вас есть больше 'хитов' в ключах, которые устанавливаются и выбирают второй, если у Вас есть больше 'промахов'.
Обратите внимание на то, что те две части кода не идентичны. Первая форма не установит значение для некоторого ключа, когда это уже установило - это предотвращает 'перезапись'.
Для массива Вы на самом деле хотите: array_key_exists($key, $array)
вместо isset($array[$key])
.
Вы имели размеры, как часто Вы сталкиваетесь с ситуацией это $array[$key]
установлен, прежде чем Вы попытаетесь установить его? Я думаю, что нельзя дать общие рекомендации по этому, потому что, если существует на самом деле много тех случаев, проверка isset могла бы возможно сэкономить некоторое время путем предотвращения unnessecary наборов на массиве. Однако, если это просто редко имеет место, издержки могли бы замедлить Вас …. Лучшая вещь состояла бы в том, чтобы сделать сравнительный тест на Вашем фактическом коде.
Однако знайте, что оба кода могут привести к различным результатам! Если $val является не всегда тем же для a $array[$key]
комбинация, бывший код всегда устанавливал бы значение к первому $val
для этого $array[$key]
где последний код всегда устанавливал бы его на последнее значение той комбинации.
(Я предполагаю, что Вы знаете об этом и $val
всегда то же для $array[$key]
, но некоторый читатель, заходящий, не мог бы.)
Издержки сравнения, которое может или не может быть верным, кажутся, что должны занять больше времени.
Что делает запущение скрипта на обоих шоу конфигураций в течение времени производительности?
Необходимо проверить массив до, но не включая уровень, который Вы собираетесь установить.
Если Вы собираетесь установить
$anArray[ 'level1' ][ 'level2' ][ 'level3' ] = ...
Необходимо удостовериться, что путь до level2 на самом деле существует до установки level3.
$anArray[ 'level1' ][ 'level2' ]
Никакие щенки не будут на самом деле уничтожены, если Вы не сделаете, но они могли бы раздражаться в зависимости от Вашей конкретной среды.
Вы не должны проверять индекс, который Вы на самом деле устанавливаете, потому что установка его автоматически означает, что он объявляется, но в интересах хорошей практики необходимо удостовериться, что ничто волшебно не создается.
Существует простой способ сделать это:
<?php
function create_array_path( $path, & $inArray )
{
if ( ! is_array( $inArray ) )
{
throw new Exception( 'The second argument is not an array!' );
}
$traversed = array();
$current = &$inArray;
foreach( $path as $subpath )
{
$traversed[] = $subpath;
if ( ! is_array( $current ) )
{
$current = array();
}
if ( ! array_key_exists( $subpath, $current ) )
{
$current[ $subpath ] = '';
}
$current = &$current[ $subpath ];
}
}
$myArray = array();
create_array_path( array( 'level1', 'level2', 'level3' ), $myArray );
print_r( $myArray );
?>
Это произведет:
Array
(
[level1] => Array
(
[level2] => Array
(
[level3] =>
)
)
)
Вам нужна фактическая проверка, чтобы видеть, там ли ключ? С присвоением на пробел выстраивают isset()
просто замедлит цикл. И если Вы не делаете вторую передачу с манипулированием данными, я категорически не рекомендую проверку isset. Это - население, не управление.
Дополнительный вызов функции к isset (), как почти гарантируют, будет иметь больше служебное, чем какое-либо присвоение. Я был бы чрезвычайно удивлен, не ли вторая форма быстрее.
Можно смотреть на исходный код PHP для наблюдения различия. Не проверял, будет ли это отличаться в более поздних версиях PHP, но это казалось бы в PHP3, функциональность ассоциативного массива находится в php3/php3_hash.c.
В функции _php3_hash_exists, сделаны следующие вещи:
Функция _php3_hash_add_or_update:
Поэтому это казалось бы просто установкой, это быстрее, потому что существует всего один вызов функции и это хеширование, и бизнес нахождения блока будут только вести однажды.
я - новичок к PHP, но комбинация обоих могла быть с тернарным оператором
$array[$key] = !isset($array[$key]) ? $val : $array[$key];
это - один способ пойти с ним.