php
  • foreach
  • counter
  • increment
  • 2013-06-07 4 views 0 likes 
    0

    У меня есть foreach, я хотел бы иметь инкрементный id = "X" (X начиная с 1 до - скажем - 6, если присутствует 6 элементов) для каждого элемента ,Счетчик PHP: Инкрементный идентификатор для каждого элемента в foreach

    Вот код:

    <?php 
    function blahblah(){ 
        $url = 'THE_URL_WHERE_I_RETRIEVE_JSON'; 
        $cache = './BLAH/'.sha1($url).'.json'; 
        if(file_exists($cache) && filemtime($cache) > time() - 1000){ 
         $jsonData = json_decode(file_get_contents($cache)); 
        } else { 
         $jsonData = json_decode((file_get_contents($url))); 
         file_put_contents($cache,json_encode($jsonData)); 
        } 
        $result = '<div id="my_div">'.PHP_EOL; 
        if(is_array($jsonData->data)){ 
         // Do the for each 
        } else { 
         // It wasn't an array so do something else 
        } 
        foreach ($jsonData->data as $key=>$value) { 
         $title = (!empty($value->caption->text))?' '.$value->caption->text:'...'; 
         $location = (!empty($value->location->name))?' at '.$value->location->name:null; 
         $result .= "\t".'<a href="'.$value->images->standard_resolution->url.'">BLAHBLAH</a>'.PHP_EOL; 
        } 
        $result .= '</div>'.PHP_EOL; 
        return $result; 
    } 
    echo get_instagram(); 
    ?> 
    

    Например, я хотел бы, что Id = "X", чтобы быть здесь <a ID="" href="">

    ответ

    0

    Я не вижу никакой проблемы в этом просто добавьте 1 переменная, которая будет работать как счетчик

    $i = 0; 
    foreach ($jsonData->data as $key=>$value) { 
        $title = (!empty($value->caption->text))?' '.$value->caption->text:'...'; 
        $location = (!empty($value->location->name))?' at '.$value->location->name:null; 
        $result .= "\t".'<a id="'.++$id.'" href="'.$value->images->standard_resolution->url.'">BLAHBLAH</a>'.PHP_EOL; 
    } 
    
    +0

    Спасибо, я принимаю это за 5 минут :) –

    +0

    нп. Обратите внимание на преинкрементацию в этом коде :) он сначала добавит значение в '$ id', а затем вернет его – Robert

    0
    $idx = 1; 
    foreach ($jsonData->data as $key=>$value) { 
         $title = (!empty($value->caption->text))?' '.$value->caption->text:'...'; 
         $location = (!empty($value->location->name))?' at '.$value->location->name:null; 
         $result .= "\t".'<a id="'.$idx++ .'" href="'.$value->images->standard_resolution->url.'">BLAHBLAH</a>'.PHP_EOL; 
    } 
    
    1

    Если THER е причина, чтобы не использовать цикл, использовать счетчик переменного

    $c = 1; 
    foreach($data as $item) { 
        // code 
        $c++; //increment the counter at the end of loop 
    } 
    

    Вы можете свободно использовать $ C внутри цикла Еогеаспа после этого.

    0

    использование может использовать счетчик для этого

    <?php 
        function blahblah(){ 
        $url = 'THE_URL_WHERE_I_RETRIEVE_JSON'; 
        $cache = './BLAH/'.sha1($url).'.json'; 
         if(file_exists($cache) && filemtime($cache) > time() - 1000){ 
         $jsonData = json_decode(file_get_contents($cache)); 
        } else { 
        $jsonData = json_decode((file_get_contents($url))); 
        file_put_contents($cache,json_encode($jsonData)); 
        } 
        $result = '<div id="my_div">'.PHP_EOL; 
        if(is_array($jsonData->data)){ 
         // Do the for each 
        } else { 
        // It wasn't an array so do something else 
        } 
        $i=1;//use as counter 
        foreach ($jsonData->data as $key=>$value) { 
        $title = (!empty($value->caption->text))?' '.$value->caption->text:'...'; 
        $location = (!empty($value->location->name))?' at '.$value->location->name:null; 
        $result .= "\t".'<a '.'id="'.$i.'" href="'.$value->images->standard_resolution- >url.'">BLAHBLAH</a>'.PHP_EOL; 
        $i++; 
    } 
    $result .= '</div>'.PHP_EOL; 
    return $result; 
    } 
        echo get_instagram(); 
    ?> 
    
    Смежные вопросы