[PHP] Functie geeft waarde niet goed terug?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Kvn
  • Registratie: Maart 2001
  • Laatst online: 20-09 23:30
Hoi! Ik ben bezig met een script dat een XML-File uitleest, regel voor regel, en de juiste waardes aan een array toekent.

De functie
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
function parseItem($itemName, $xmlLine) {
        
        if ( preg_match("/$itemName/i", $xmlLine) ) {
                                
            $string = preg_replace("/$itemName/i", "", $xmlLine);

            $string = preg_replace("/           /", "", $string);
        
        }   
                
        return $string; 
    
    }


Nu ken ik deze waarde als volgt toe aan mn array

PHP:
1
$resultaat[$i]['Name'] = parseItem('Name', $id3Tags[0]);


De functie geeft ook netjes de juiste naam terug als ik hem echo, maar als ik hem als bovenstaand gebruik bij het in de array zetten, blijft deze leeg? Waar kan dit aan liggen?

Acties:
  • 0 Henk 'm!

Verwijderd

Doe eens een print_r() van je $resultaat-array?
In theorie moet, als een echo goed gaat, het toekennen van diezelfde waarde aan een array natuurlijk geen problemen opleveren.

[ Voor 58% gewijzigd door Verwijderd op 22-02-2006 19:16 ]


Acties:
  • 0 Henk 'm!

  • Kvn
  • Registratie: Maart 2001
  • Laatst online: 20-09 23:30
Verwijderd schreef op woensdag 22 februari 2006 @ 19:15:
Doe eens een print_r() van je $resultaat-array?
In theorie moet, als een echo goed gaat, het toekennen van diezelfde waarde aan een array natuurlijk geen problemen opleveren.
Bij een print_r ( Zo bekijk ik de array nu ook :) ) krijg ik simpelweg een lege waarde.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Array
(
     [0] => Array
        (
            [Name] => 
        )

     [1] => Array
        (
            [Name] => 
        )

     [2] => Array
        (
            [Name] => 
        )

    [3] => Array
        (
            [Name] => 
        )
)

Acties:
  • 0 Henk 'm!

Verwijderd

Kvn schreef op woensdag 22 februari 2006 @ 19:18:
[...]


Bij een print_r ( Zo bekijk ik de array nu ook :) ) krijg ik simpelweg een lege waarde.
Er gaat toch iets mis bij het toekennen van een van je variabelen (zelf even stap-voor-stap debuggen dus) want de volgende code werkt prima bij mij:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function parseItem($itemName, $xmlLine) {
    if(preg_match("/".$itemName."/i", $xmlLine)) {
        $string = preg_replace("/".$itemName."/i", "", $xmlLine);
        $string = preg_replace("/            /", "", $string);         
    }

    return $string;

}

$resultaat = array();
$resultaat[1]['naam'] = parseItem('hendrik', 'Mijn naam is Hendrik de Boer.');

print_r($resultaat);

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Je weet zeker dat die if-statement true op levert? Want als die false is, returned je methode alleen een lege string. Dus het zou heel goed kunnen dat daar het probleem ligt.

Acties:
  • 0 Henk 'm!

  • Kvn
  • Registratie: Maart 2001
  • Laatst online: 20-09 23:30
Sybr_E-N schreef op woensdag 22 februari 2006 @ 19:29:
Je weet zeker dat die if-statement true op levert? Want als die false is, returned je methode alleen een lege string. Dus het zou heel goed kunnen dat daar het probleem ligt.
De functie geeft ook netjes de juiste naam terug als ik hem echo, maar als ik hem als bovenstaand gebruik bij het in de array zetten, blijft deze leeg? Waar kan dit aan liggen?

:)

Het is nogaal raar ivy, als ik een variabele meegeef met daarin een string, werkt het niet. Zet ik nu direct een string erin ( Zoals jij doet ), dan werkt het wel.

Toch kan ik gewoon echo'en zonder problemen.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Waarom gebruik je hier regexps voor? :?

PHP:
1
2
3
4
5
6
7
8
function parseItem($itemName, $xmlLine) {
        $string = xmlLine;
        if ( stristr($string, $itemName) !== false ) {
            $string = str_ireplace($itemName, "", $string);
            $string = str_replace("            ", "", $string);
        }    
        return $string;    
    }

Zo zou ie toch een stuk beter moeten werken?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Kvn
  • Registratie: Maart 2001
  • Laatst online: 20-09 23:30
-NMe- schreef op woensdag 22 februari 2006 @ 19:57:
Waarom gebruik je hier regexps voor? :?

PHP:
1
2
3
4
5
6
7
8
function parseItem($itemName, $xmlLine) {
        $string = xmlLine;
        if ( stristr($string, $itemName) !== false ) {
            $string = str_ireplace($itemName, "", $string);
            $string = str_replace("            ", "", $string);
        }    
        return $string;    
    }

Zo zou ie toch een stuk beter moeten werken?
Omdat ik dat handig vind? Jouw functie werkt in mijn geval in ieder geval niet, misschien moet ik het hele script neerplempen anders, maar dat laat ik liever :). Opzich krijg ik met echo'en een goede output, maar het toekennen werkt dus niet.

  • om3ega
  • Registratie: Maart 2001
  • Laatst online: 00:11
Ik weet niet met welke versie van PHP je werkt , maar als dat 5 of hoger is zou je ook eens naar SimpleXML kunnen kijken :

http://www.php.net/simplexml

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

hier stond onzin

[ Voor 83% gewijzigd door TheRookie op 23-02-2006 08:12 ]


Verwijderd

Dit:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function parseItem($itemName, $xmlLine) { 
    if(preg_match("/".$itemName."/i", $xmlLine)) { 
        $string = preg_replace("/".$itemName."/i", "", $xmlLine); 
        $string = preg_replace("/            /", "", $string);          
    } 

    return $string; 

} 

$resultaat = array();

$naam = 'Hendrik';
$zin = 'Mijn naam is hendrik de boer.';

$resultaat[1]['naam'] = parseItem($naam, $zin); 

print_r($resultaat);


...werkt ook prima, dus er gaat duidelijk iets mis in je voorbereiding.
Verder heeft dit topic niet veel nut, want het gaat nu alleen maar steeds meer offtopic...

Kortom, fout ergens anders zoeken en niet in je parseItem() functie.
Pagina: 1