2017-08-08 78 views
0

我有一个数组的数组包含数组键和值,这里的例子:打印下一个数组键

Array ( 
[0] => Array ([Hotel] => N [Jayakarta] => NE [Jaya] => NE [sangat] => ADV [nyaman] => ADJ [ditempati] => V.) 
[1] => Array ([Andi] => NOB [Hotel] => N [menginap] => V [disana] => N [selama] => N [satu] => NUM [minggu] => N.) 
) 

我想打一个输出,如果我找到了“酒店的关键“然后我会打印下一把钥匙从”酒店“。例如:

Hotel Jayakarta Jaya

Hotel menginap disana

这里是我做的那一刻:

foreach($token2 as $index => $tok){ 
    foreach ($tok as $tokkey => $tokvalue) { 
     if ($tokkey == "Hotel" and $tokvalue == "N"){ 
      echo $tokkey . " " ; 

      while($cek == true && $x <= 2){ 
       $next = next($tok); 
       echo key($tok). " " ;  

       $x++; 
      } 
      echo ", "; 
      $x = 1; 
     } 
    } 
} 

和输出:

Hotel Jayakarta jaya sangat , Hotel Hotel menginap

预期Outpu T应当如下:

Hotel Jayakarta jaya sangat , Hotel menginap disana selama

任何帮助非常感谢,谢谢。

+1

你还没有描述你想要完成什么。什么决定了你保持和索引?酒店之后你想要所有的指数吗?什么决定? – Kisaragi

回答

0

这样做如下:

$i = 3; 
foreach($token2 as $index => $tok){ 
    foreach ($tok as $tokkey => $tokvalue) { 
     if ($tokkey == "Hotel" && $tokvalue == "N"){ 
      echo $tokkey . " " ; 
      $i = 1; 
     } 
     else if($i < 3){ 
      echo $tokkey . " "; 
      $i++; 
     } 
    } 
    echo ", "; 
} 
0

也许你可以试试这个?

$arrayOfHotels = array(0 => array('Hotel' => 'N' , 'Jakarta' => 'NE', 'Jaya' => 'NE', 'sangat' => 'ADV', 'nyaman' => 'ADJ', 'ditempati' => 'V.'),1 => array('Andi' => 'NOB', 'Hotel' => 'N', 'menginap' => 'V', 'disana' => 'N', 'selama' => 'N', 'satu' => 'NUM', 'minggu' => 'N.')); 

echo '<pre>'; 
print_r(findHotel($arrayOfHotels)); 
echo '</pre>'; 

function findHotel($hotels) 
{ 
    $isHotelFind = false; 
    $isFirstThrough = true; 
    foreach($hotels as $row => $value) 
    { 
     foreach ($value as $row2 => $value2) 
     { 
      if($row2 == "Hotel" && $value = 'N' && !$isHotelFind) 
      { 
       if($isFirstThrough) 
       { 
        echo $row2 . " "; 

       } 
       else 
       { 
        echo ", " . $row2 . " "; 
       } 
       $isHotelFind = true; 
       $isFirstThrough = false; 
      } 
      if($isHotelFind && $row2 != "Hotel") 
      { 
       echo $row2 . " "; 
      } 
     } 
     $isHotelFind = false; 
    } 
} 
0

您可以使用array_search找到你的钥匙之前删除它主要元素。

$array = [ 
    [ 
    "Hotel"  => 'N', 
    "Jayakarta" => 'NE', 
    'Jaya'  => 'NE', 
    'sangat' => 'ADV', 
    'nyaman' => 'ADJ', 
    'ditempati' => 'V.' 
    ] 
    , 
    [ 
    "Andi"  => 'NOB', 
    "Hotel" => 'N', 
    'menginap' => 'V', 
    'disana' => 'N', 
    'selama' => 'N', 
    'satu'  => 'NUM', 
    'minggu' => 'N.' 
    ] 
]; 


foreach ($array as $data) { 
    // Find index to start 
    $index = array_search("Hotel", array_keys($data)); 
    // Remove other keys 
    $new_array_starting_hotel = array_splice($data, $index, count($data)); 
    // merge results 
    $merged[] = implode(' ', array_keys($new_array_starting_hotel)); 
} 

print_r($merged); 

和输出将是这样的:

Array 
(
    [0] => Hotel Jayakarta Jaya sangat nyaman ditempati 
    [1] => Hotel menginap disana selama satu minggu 
) 

您可以合并或内爆你喜欢的一切不过。

+1

您的输出看起来不像预期的输出。 – Barmar