если print_r пустое условие в PHP - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь заставить оператор else работать с print_r таким образом, чтобы при отсутствии значения он выводил «no values».В коде я получаю значения из json, преобразованные в массив.Логика, которой я пытаюсь достичь, это если IF fieldTag содержит «i», ТО выводит содержимое, связанное с ним, иначе говорит, что оно пустое.Прямо сейчас выводится пустое значение, а не «нет значений».Спасибо

for($b=0; $b<count($res['entries'][$i]['bib']['varFields']); $b++) //loop thru the varFields            
{
    if($res['entries'][$i]['bib']['varFields'][$b]['fieldTag'] == "i")
    {                       
        $subfieldText2 = $res['entries'][$i]['bib']['varFields'][$b]['subfields'][0]['content']."<br>";
        if(count($subfieldText2) > 0) { 
            print_r($subfieldText2); 
        } else { 
            echo "no values";
        }
    }
}    

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

это сработало для меня, спасибо всем

$subfieldText2="not detected";

          echo "ISBN: ";
                for($b=0; $b<count($res['entries'][$i]['bib']['varFields']); $b++) //loop thru the varFields
                                    {
                                      if($res['entries'][$i]['bib']['varFields'][$b]['fieldTag'] == "i")
                                            {

                                            $subfieldText2 = $res['entries'][$i]['bib']['varFields'][$b]['subfields'][0]['content'];
                                            echo $subfieldText2.", ";

                                            }
                                      }

            echo $subfieldText2;
0 голосов
/ 09 июня 2018

count() для массивов, а не для строк, способ получить длину строки с помощью strlen().И если вы хотите проверить наличие пустой строки, просто сравните ее с $var == "", вам не нужно получать длину.

Но вы объединяете "<br>" со значением, поэтому длинаникогда не будет ноль.Вы можете проверить длину перед объединением .

$subfieldText2 = $res['entries'][$i]['bib']['varFields'][$b]['subfields'][0]['content'];
if($subfieldText2 != "") { 
    $subfieldText2 .= "<br>";
    print_r($subfieldText2); 
} else { 
    echo "no values";
}

И чтобы избежать необходимости повторять это длинное выражение для доступа к полю, вы можете использовать foreach

for($res['entries'][$i]['bib']['varFields'] as $field) {
    if ($field['fieldTag'] == "i") {
        $subfieldText2 = $field['subfields'][0]['content'];
        ...
    }
}
...