Короче говоря, я выполняю задание, и у меня есть файл cookie, который у меня заполнен введенными пользователем данными из отдельных полей. Я пытаюсь захватить информацию из файла cookie, и, если, скажем, например, они выбирают вариант A во всех восьми раскрывающихся списках, он будет отгонять предложение. Если нет, это просто ничего не значит. Здесь мой код, о котором идет речь:
foreach ($savedCardArray as $key => $val) {
if ($val === 'over2000') {
foreach ($savedCardArray as $key => $val) {
if ($val ==='always') {
foreach ($savedCardArray as $key => $val) {
if ($val ==='publicTransport') {
foreach ($savedCardArray as $key => $val) {
if ($val ==='public') {
foreach ($savedCardArray as $key => $val) {
if ($val ==='photoEditing') {
foreach ($savedCardArray as $key => $val) {
if ($val ==='notSureSize') {
foreach ($savedCardArray as $key => $val) {
if ($val ==='notSureType') {
foreach ($savedCardArray as $key => $val) {
if ($val ==='always') {
echo 'We recommend the Lenovo Thinkpad!<br>';
}}}}}}}}}}}}}}}}
Итак, есть ли более простой способ написать это? и почему он повторяет ответ четыре раза?
Здесь содержимое массива:
Array
(
[price] => over2000
[time] => always
[where] => publicTransport
[people] => public
[for] => photoEditing
[size] => notSureSize
[type] => notSureType
[Brand] => always
)
Сохранение с помощью цикла, чтобы вы могли расширить его, если вам нужно изменить любые значения;
$checkArray = array('over2000', 'always', 'publicTransport', 'public', 'photoEditing', 'notSureType', 'always');
$checkFlag = 0;
foreach ($savedCardArray as $key => $val) {
if (!in_array($val, $checkArray)) { $checkFlag = 1; }
}
if ($checkFlag == 0) { echo 'We recommend the Lenovo Thinkpad!<br>'; }
Любые дополнительные значения для проверки должны быть добавлены в checkArray
.
Быстро и грязно, если это все, что вам нужно:
$checkArray = array('over2000', 'always', 'publicTransport', 'public', 'photoEditing', 'notSureType', 'always');
if($checkArray == array_values($savedCardArray)){
echo 'We recommend the Lenovo Thinkpad!<br>';
}
Это самый безопасный способ сделать это. Потому что в вашем примере вы не делаете матч против ключа. Таким образом, $data['Brand']
и $data['time']
вернут true для 'always'
.
if(
$data['price'] == 'over2000' &&
$data['time'] == 'always' &&
$data['where'] == 'publicTransport' &&
$data['people'] == 'public' &&
$data['for'] == 'photoEditing' &&
$data['size'] == 'notSureSize' &&
$data['type'] == 'notSureType' &&
$data['Brand'] == 'always'
) {
echo 'We recommend the Lenovo Thinkpad!<br>';
}
Учитывая, что $data
содержат ваши данные cookie.
$savedCardArray = array("price"=>"over2000","time"=>"always","where"=>"publicTransport","people"=>"public","for"=>"photoEditing","size"=>"notSureSize","type"=>"notSureType","Brand"=>"always");
$vals = array("over2000","always","publicTransport"/*... and so on */);
$found =0;
foreach($vals as $neededVal){
if(in_array($neededVal,array_values($savedCardArray)))
{
$found++;
}
}
if($found==count($vals))
echo 'We recommend the Lenovo Thinkpad!<br>'