php如何使用相同的键打印值

时间:2013-02-04 19:59:16

标签: php

我有一些问题

this is my orginal array and cood below **will not work** on this array
<?php 
$rijeci=array ( "tekst"=> "osoba" ,"vrsta" => "imenica", 
                "tekst"=> "kuha" , "vrsta" => "glagol", 
                "tekst"=> "crnu" , "vrsta" => "pridjev",  
                "tekst"=> "kavu" , "vrsta" => "imenica",
                "tekst"=> "kopa" , "vrsta" => "glagol")
?>

这是我改变的数组

<?php 
$rijeci=array ( "tekst1"=> "osoba" ,"vrsta1" => "imenica", 
                "tekst2"=> "kuha" , "vrsta2" => "glagol", 
                "tekst3"=> "crnu" , "vrsta3" => "pridjev",  
                "tekst4"=> "kavu" , "vrsta4" => "imenica",
                "tekst5"=> "kopa" , "vrsta5" => "glagol")
?>

1)我怎么能回应这个    osoba,kuha,crnu,kavu,kopa,

这将在我更改的数组中起作用

foreach($rijeci as $key => $var){
    if($var != "imenica" && $var != "glagol"  && $var != "pridjev" )
        echo "$var "  ; 

2)我怎么能回应这个 Imenice:osoba kavu Glagol:kuha kopa Pridjev:crnu

这将在我更改的数组中有效,但还有其他方法可以打印吗?

    $prethodna = null;
    if($m=="prikazVrstaRijeci"){
    echo "Imenice:\n" ;
foreach ($rijeci as $kljuc => $vrijednost){
    if($vrijednost == "imenica"){
        if($prethodna) {
          echo "$prethodna ";
       }
    }
    $prethodna = $vrijednost;
}
echo "<br />";
echo "Glagol:\n" ;
foreach ($rijeci as $kljuc => $vrijednost){
    if($vrijednost == "glagol"){
        if($prethodna) {
            echo "$prethodna ";
        }
    }
    $prethodna = $vrijednost;
}
echo "<br />";
echo "Pridjev:\n" ;
foreach ($rijeci as $kljuc => $vrijednost){
    if($vrijednost == "pridjev"){
        if($prethodna) {
            echo "$prethodna ";
        }
    }
    $prethodna = $vrijednost;
}
}

我如何打印1.)2.)我的原始数组中的问题?这有可能吗?

2 个答案:

答案 0 :(得分:0)

您不能使用具有不同值的相同键,您可以将数组更改为此

$rijeci=array ("osoba" ,"imenica", 
               "kuha" ,  "glagol", 
              "crnu" , "pridjev",  
             "kavu" , "imenica",
             "kopa" , "glagol")

现在这段代码工作

foreach($rijeci as $key => $var){
if($var != "imenica" && $var != "glagol"  && $var != "pridjev" )
    echo $var; 

在这个Echo列表数组中你可以这样做

 <?php 
 $rijeci=array ( "tekst1"=> "osoba" ,"vrsta1" => "imenica", 
            "tekst2"=> "kuha" , "vrsta2" => "glagol", 
            "tekst3"=> "crnu" , "vrsta3" => "pridjev",  
            "tekst4"=> "kavu" , "vrsta4" => "imenica",
            "tekst5"=> "kopa" , "vrsta5" => "glagol")
 foreach($rijeci as $key => $var){
   switch( $var){
     case "osoba":
       echo $var; 
     break;
     case "kuha":
       echo $var; 
     break;
     case "crnu":
       echo $var; 
     break;
     case "kavu":
       echo $var; 
     break;
     case "kopa":
       echo $var; 
     break;
   }
   echo ",";

 }

 ?>

答案 1 :(得分:0)

没有办法让你的第一个例子按照你想要的方式工作。 PHP数组只能包含给定键的单个值。数组中的var_dump()会向您显示无法打印您想要的值,因为它们不在那里。但是,您可以使用嵌套数组,如下所示:

$rijeci=array ( array("tekst"=> "osoba" ,"vrsta" => "imenica"),
                array("tekst"=> "kuha" , "vrsta" => "glagol"),
                array("tekst"=> "crnu" , "vrsta" => "pridjev"),
                array("tekst"=> "kavu" , "vrsta" => "imenica"),
                array("tekst"=> "kopa" , "vrsta" => "glagol"));

foreach ($rijeci as $pair) {
    print $pair['tekst'];
    print " ";
    print $pair['vrsta'];
    print "\n";
}

您也可以在嵌套数组中使用命名索引,例如:

$rijeci = array(
    'imenica' => array('osoba', 'kavu'),
    'glagol' => array('kuha', 'crnu'),
    'pridjev' => array('crnu'),
    );

foreach ($rijeci as $vrsta => $stuff) {
    print "$vrsta : ";
    foreach ($stuff as $tekst) {
        print "$tekst, ";
    }
    print "\n";
}

或者,您可以编写该循环:

foreach ($rijeci as $vrsta => $stuff) {
    print "$vrsta : ";
    print implode($stuff, ',');
    print "\n";
}

希望这足以让你走上解决方案的道路。