Magento 1.9, если пример кода SKU Code Equals не работает — помогите :D

Я пытаюсь проверить, равен ли первый символ sku, а затем показать значение пользовательской опции. вот код

if (strpos($sku_code, 'F') == 0) { 
    $select->setValue($configValue); 
}

Использование этого кода дает желаемый эффект: он изменяет значение пользовательской опции, но, к сожалению, изменяет значение для всех артикулов, а не только для тех, которые начинаются с «F».

Какие-нибудь мысли? или примеры того, что я мог бы попробовать?

UPdate Спасибо за помощь. Я попробовал ваше решение, но результат тот же. Просто игнорируя утверждение, вот код, который я использую.

if (strpos($sku_code, 'F') === 0) {
                    $select->setValue($configValue); 
                }
                else if ($_value->getTitle() == 'M') {
                    $select->setValue($_value->getOptionTypeId());  
                }
                else if ($_value->getTitle() == 'T') {
                    $select->setValue($_value->getOptionTypeId());  
                } 

person Craig Gillett    schedule 04.04.2019    source источник


Ответы (1)


strpos($sku_code, 'F')  

вернет false, если строка поиска не найдена. А в PHP 0 считается ложным. Поэтому ваше состояние будет оценено как истинное! Вы также можете проверить тип возвращаемого значения, например, if(strpos($sku_code, 'F') === 0), так как это также проверит тип данных.

person Naveen Kumar    schedule 04.04.2019
comment
Я отредактировал комментарии выше. Попробовал ваше решение с тем же эффектом. - person Craig Gillett; 04.04.2019
comment
любая помощь с этим была бы грандиозной! :D - person Craig Gillett; 09.04.2019
comment
Условия if/elseif выглядят неправильно. У вас есть образец данных, которые вы пытаетесь проверить/обновить? Я просто предполагаю, что условие должно выглядеть примерно так: if (strpos($sku_code, 'F') === 0) { '$select->setValue($configValue); ` '} 'else if ($_value-›getTitle() == 'M') {` $select->setValue($_value->getOptionTypeId()); ` }` else if ($_value->getTitle() == 'T') { $select->setValue($_value->getOptionTypeId());} - person Naveen Kumar; 09.04.2019
comment
Я согласен, что что-то не так, но это сделало то же самое, и теперь просто пропускает сначала, если и использует значения M и T, если они существуют в атрибуте. Это поставило меня в тупик, так как код выглядит хорошо и должен работать. Он отлично работает в других целях. Вы можете увидеть полный код здесь. - person Craig Gillett; 10.04.2019
comment
Значит, формат $sku_code другой. Можете ли вы поделиться значением в этой переменной? - person Naveen Kumar; 10.04.2019
comment
Вы можете увидеть этот пример продукта. gilletts.com.au/.. Номер продукта: F16200 — артикул данного товара. Я пытаюсь сопоставить любой артикул, начинающийся с F, чтобы показать значение по умолчанию для кольцевой переменной (в этом экземпляре кольца значение по умолчанию — I (значение по умолчанию), иначе, если значение M находится в списке, по умолчанию будет это другое T ect ... - person Craig Gillett; 11.04.2019
comment
Ах, это из-за f. Если вы хотите игнорировать регистр, используйте вместо него stripos. Это игнорирует регистр строки, которую вы пытаетесь найти. - person Naveen Kumar; 11.04.2019
comment
Итак, я не сработал, но я изменил ссылку поиска на if (strpos($sku_code, 'f') == 0) (т.е. нижний регистр), и да, это работает! наконец .. Но есть ли другой способ игнорировать регистр, поскольку ваши «полоски» не сработали - person Craig Gillett; 12.04.2019
comment
Вы можете использовать либо stripos, либо $sku_code в нижнем регистре, выполнив strtolower($sku_code). - person Naveen Kumar; 12.04.2019