2009-06-01 11 views
40

मैं XML यहां के माध्यम से 3 पोस्ट के बाद एक छवि हर गूंज करना चाहता था मेरी कोड है:PHP: आप लूप के प्रत्येक एनएच पुनरावृत्ति को कैसे निर्धारित करते हैं?

<?php 
// URL of the XML feed. 
$feed = 'test.xml'; 
// How many items do we want to display? 
//$display = 3; 
// Check our XML file exists 
if(!file_exists($feed)) { 
    die('The XML file could not be found!'); 
} 
// First, open the XML file. 
$xml = simplexml_load_file($feed); 
// Set the counter for counting how many items we've displayed. 
$counter = 0; 
// Start the loop to display each item. 
foreach($xml->post as $post) { 
    echo ' 
    <div style="float:left; width: 180px; margin-top:20px; margin-bottom:10px;"> 
image file</a> <div class="design-sample-txt">'. $post->author.'</div></div> 
'; 

    // Increase the counter by one. 
    $counter++; 
    // Check to display all the items we want to. 
    if($counter >= 3) { 
    echo 'image file'; 
    } 
    //if($counter == $display) { 
    // Yes. End the loop. 
    // break; 
    //} 
    // No. Continue. 
} 
?> 

यहाँ एक नमूना पहले 3 सही है, लेकिन अब यह पाश idgc.ca/web-design-samples नहीं है -testing.php

+1

कृपया स्टैक ओवरफ़्लो कोड स्वरूपण मोड का उपयोग करें। आपका कोड अभी पठनीय नहीं है। –

+0

सवाल क्या है? टेक्स्टरेरा में उपलब्ध टूल्स बनाने के लिए भी एक नज़र डालें .. –

+0

सुझाव दें कि आप "एनएचटी लूप पर डिस्प्ले इमेज" जैसे कुछ और वर्णनात्मक प्रश्न को बदल दें। –

उत्तर

123

मॉड्यूलस डिवीजन ऑपरेटर का उपयोग करने का सबसे आसान तरीका है।

if ($counter % 3 == 0) { 
    echo 'image file'; 
} 

यह कैसे काम करता है: मापांक विभाजन शेष देता है। जब आप एक से अधिक होते हैं तो शेष हमेशा 0 के बराबर होता है।

एक पकड़ है: 0 % 3 0. के बराबर यह अप्रत्याशित परिणाम में परिणाम सकता है अगर आपके काउंटर 0.

+0

एक और समस्या यह है कि मेरा लाइटबॉक्स अब और काम नहीं करता है .... क्या कोई एक्सएमएल PHP विवाद है? –

+0

मॉड्यूलस ऐसा करने का एक उचित तरीका है, लेकिन यदि आप लाखों पुनरावृत्तियों कर रहे हैं, तो यह प्रदर्शन बाधा बन सकता है, क्योंकि मॉड्यूलस में विभाजन शामिल है। इस मामले में, आप दूसरे काउंटर का बेहतर उपयोग करते हैं, इसकी तुलना वांछित संख्या से करें और तुलना करते समय इसे रीसेट करें। – bhelm

8

PHP मैनुअल में here मॉड्यूलो अंकगणितीय ऑपरेशन का उपयोग करें।

उदा

$x = 3; 

for($i=0; $i<10; $i++) 
{ 
    if($i % $x == 0) 
    { 
     // display image 
    } 
} 

मापांक गणना के एक अधिक विस्तृत समझ के लिए, here क्लिक करें।

2

पर शुरू होता है है कैसे के बारे में: अगर (($ काउंटर% $ प्रदर्शन) == 0)

2

मैं प्रत्येक 1000 पुनरावृत्तियों में "+" चरित्र दिखाने के लिए यह एक स्थिति अद्यतन का उपयोग कर रहा हूं, और ऐसा लगता है कि यह अच्छा काम कर रहा है।

if ($ucounter % 1000 == 0) { echo '+'; } 
8

के बंद जा रहे हैं @ Powerlord का जवाब,

"एक पकड़ नहीं है: 0% 3 0. के बराबर है इस में अप्रत्याशित परिणाम हो सकता है अगर आपके काउंटर 0. पर शुरू होता है"

तुम अब भी 0 (सरणियों, querys) पर अपने काउंटर शुरू कर सकते हैं, लेकिन मापांक बिना ऑफसेट यह

if (($counter + 1) % 3 == 0) { 
    echo 'image file'; 
} 
0

आप कर भी कर सकते हैं यह। जब यह मेल खाता है तो बस अपने काउंटर को रीसेट करें।

if($counter == 2) { // matches every 3 iterations 
    echo 'image-file'; 
    $counter = 0; 
} 
संबंधित मुद्दे