Разочарование при попытке вывести два конкретных значения из массива - PullRequest
0 голосов
/ 25 февраля 2011

Я пытаюсь сделать простой поиск для определенных массивов в скрипте, поэтому у меня есть оригинальный ассоциативный массив:

$vNArray ['Brandon']  = $item[3]; 
$vNArray['Smith']= $item[4]; 
$vNArray ['Johnson']= $item[5];
$vNArray ['Murphy']= $item[6];
$vNArray ['Lepsky']= $item[7];

, который выводит общий результат для большинства значений:

foreach ($vNArray as $key => $value){

 if(!empty($value)){
    $result  .= "\t\t\t\t<li><strong>$key</strong>"  .$value.   "</li>\n";
 }

Но затем я хочу, чтобы два из этих массивов отображались по-разному, поэтому я добавил другой сценарий, предложенный кем-то:

$display_id=array('Brandon', 'Murphy');

foreach ($vNArray as $key => $value){
  if(!empty($value)){
    //Looks into the display_id array and renders it differently
    if (in_array($key, $display_id)) {
    $result  .= "\t\t\t\t<li id=\"$key\"><strong>$key</strong>$value</li>\n";
    } else {
    $result .= "\t\t\t\t<li><strong>$key</strong>$value</li>\n";
    }
  }

}

Проблема в том, что я хочу получить результатчтобы эти массивы содержали оба в первом результате, но когда я пытался вывести $ result. = "\ t \ t \ t \ t $ key [1] ". $ value [1]. " \ n ";

PHP считает, что индекс является индексом символа значения, поэтому у меня возникают серьезные проблемы с синтаксисом, такие как id =" / " r .

Я также пытался

$result  .= "\t\t\t\t<li id=\"". $display_id['Brandon']$value.\""><strong>$key[1]</strong>". $display_id['Murphy']$value." </li>\n";

Но у меня все еще возникают проблемы с синтаксисом ... как

syntax error, unexpected T_VARIABLE

Или какая-то другая ошибка, подобная этой.

Может кто-нибудь помочь, пожалуйста?

EDITED


Я внес исправления в синтаксис, но мне все еще нужно указать индекс:

Результатиз

result  .= "\t\t\t\t<li id=\"". $display_id['Brandon'] . $value."\"><strong>" .   $key[1] . "</strong>". $display_id['Murphy'] . $value." </li>\n";

Необходимо (обратите внимание, что каждое значение находится на одном и том же выходе в зависимости от того, на что я нацеливаюсь):

<li id="Brandon Value"><strong>Brandon</strong> Murphy Value</li>

Прямо сейчас оно игнорирует значение индекса.$ display_id ['Брэндон'].$ Значение.или же .$ display_id ['Murphy'].$ value. "все вместе и просто повторяется:

<li id="Brandon Value"><strong>Brandon</strong> Brandon Value</li>
<li id="Murphy Value"><strong>Murphy</strong> Murphy Value</li>

Ответы [ 2 ]

1 голос
/ 25 февраля 2011

Просто сделайте $key, забудьте бит [1]. То же самое с $value.

0 голосов
/ 25 февраля 2011

Каждое значение необходимо объединить с другим, например:

echo $a . $b . $c . $d . $e;

Обратите внимание на контакт ., который соединяет каждую переменную с переменной next / prev, поэтому ваша строка:

$display_id['Brandon']$value

должно выглядеть следующим образом:

$display_id['Brandon'] . $value
                       ^

Я бы сделал следующее:

$result  .= sprintf('<li id="%s"><strong>%s</strong> %s</li>',$display_id['Brandon'] . $value,$key[1],$display_id['Murphy'] . $value);

Также использование sprintf также сделает ваш код более читабельным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...