在数组中定位键和值,并使用PHP以不同方式呈现它们

时间:2011-02-17 12:17:34

标签: php arrays

我正在经历这个使我的代码更有效率的过程,但是却以不同的方式渲染我的结果而打了另一面墙。

我有一个像这样运行的脚本

$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";
 }

到目前为止一直很好,但有时结果必须以不同方式呈现,以便我可以

$result  .= "\t\t\t\t<li><a href="thislink.com">$key</a>"  .$value. "</li>\n";

$result  .= "\t\t\t\t<li id=\"$key\" ><strong>$key</strong>"  .$value. "</li>\n";

我想设置这个的方法是向下钻取我的数组列表并选取一些我将设置为以该格式输出的数组,但是因为我对PHP很新,所以我不知道如何定位特定的数组和键,我尝试过像$ key这样的东西[1],但它认为我正在查看名称的字母,而不是数组索引。

有没有办法简化这个,以便我可以从上面的数组中选择值或键并以不同的方式呈现它?

干杯

2 个答案:

答案 0 :(得分:0)

您可以定义要以不同方式呈现的条件吗?或许可以提供一些代码示例。根据你所说的,虽然以下是你所追求的东西。

if(!empty($value)){
    if( test case one ){
        $result  .= "\t\t\t\t<li><a href="thislink.com">$key</a>".$value."</li>\n";
    } else if ( test case two ) {
        $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";
    }
}

答案 1 :(得分:0)

我不确定我是否理解,但让我们看看。

您可以使用需要特定输出的键列表创建一个数组,例如:

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

然后在你的foreach:

foreach ($vNArray as $key => $value){
  if(!empty($value)){
    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";
    }
  }
}

这意味着如果当前显示的键位于$ display_id数组中,它将以不同方式显示。您可以根据需要添加任意数量的ifs和数组。