कृपया इस पर मेरी मदद करें क्योंकि मैं PHP पर नौसिखिया हूं। मैं एक फाइल से पढ़ रहा हूं और सामग्री को एक सरणी में लोड कर रहा हूं। अब मैं केवल एक रिकॉर्ड प्रदर्शित करना चाहता हूं लेकिन परिणाम एक खाली पृष्ठ दे रहा है। जब मैं पूरी सरणी प्रदर्शित करता हूं तो यह ठीक काम करता है लेकिन मैंने एक विशिष्ट रिकॉर्ड प्राप्त करने के लिए if कथन रखा है, यह काम नहीं करता है। कृपया नीचे दिए गए कोड को देखें।

<?php
    $strreturn = "H123458"; 
    $customerRec = array(); 
    $destination_url ="./users/patient.txt";
    $myfile = fopen($destination_url, "r") or die("Unable to open file!");
    $c=0;
    while(!feof($myfile)) {             
        $customerRec[$c++] = fgets($myfile);        
    }
    fclose($myfile);

    for($i=0;$i<count($customerRec);$i=$i+6){
        if($customerRec[$i] == $strreturn){ 
            for($t=$i;$t<6+$i;$t++){
                echo "$customerRec[$t]"."<br/>";                
            }                           
        }           
    }   
?>

--रोगी.txt----

H123456
Hemede
1234567896541
2018-09-01
2018-09-30
CPT805
H123457
Mario
9876543214569
2018-09-02
2018-09-29
CPT280
H123458
Michael
3698521478965
2018-09-03
2018-09-28
PML209
H123521
Laurant
7532159852365
2018-09-04
2018-09-24
FRS965
H123954
Theos
9658741258632
2018-09-05
2018-09-19
OTH77
php
1
H.Petro 11 सितंबर 2018, 15:42

3 जवाब

सबसे बढ़िया उत्तर

यह एक बहुत ही विशिष्ट प्रश्न है लेकिन यहां एक समाधान के साथ जाता है जो आपको कुछ अनुकूलन संकेत दे सकता है और PHP मैनुअल का पता लगाने में कभी दर्द नहीं होता है

// Load the file contents into an array, trimming away any whitespace
$customerRec = array_map('trim', file(__DIR__ . '/users/patient.txt'));

// Split the array into groups of 6
$groups = array_chunk($customRec, 6);

// Find the groups with the first record equal to "H123458"
$search = "H123458";
$found = array_filter($groups, function($group) use ($search) {
    return reset($group) === $search;
});

// Loop over the found groups and display them
foreach ($found as $group) {
    echo implode('<br/>', $group);
}

सन्दर्भ:

0
2 revs 11 सितंबर 2018, 16:34

बस अपनी लाइन if($customerRec[$i] == $strreturn){ को नीचे की लाइन से बदलें

if(trim($customerRec[$i]) == $strreturn){ 

उम्मीद है ये मदद करेगा

1
Krishna Joshi 11 सितंबर 2018, 16:53

आपका कोड ठीक है। लेकिन सरणी तत्वों के अंत में शायद एक अतिरिक्त नया-पंक्ति वर्ण होता है।

यही कारण है कि if-statement में तुलना काम नहीं करती है। इफ-स्टेटमेंट से पहले इस लाइन को आजमाएं:

echo urlencode($customerRec[$i])."<br/>";

आपको शायद कुछ ऐसा दिखाई देगा: H123458%0A

इसके लिए एक समाधान fgets के चारों ओर एक ट्रिम फ़ंक्शन का उपयोग करना होगा।

0
Mark1 11 सितंबर 2018, 16:44