Déclarer tableau vide, le remplir et l'itération des ennuis - PHP
J'ai écrit un script pour lire le catalogue de Netflix et de remplir ma DB. Tout a bien fonctionné comme un script web (sauf pour les délais d'attente) donc je l'ai déplacé à d'appeler directement à partir de la console.
J'ai remarqué quelques bizarreries, comme le __construct() n'est plus appelé (mais qui a été facilement résolu en utilisant le nom de la classe comme une fonction.
Maintenant, je ne pouvez pas obtenir mes tableaux à fonctionner comme avant, voici l'idée générale.
(En fait, j'ai essayé quelques combinaisons, donc je vais le partager)
1 - il a travaillé dans le web version de script très bien, ne fonctionne plus appel à partir de la console
//declare empty
var $genreArray=array();
//later I add values one at a time as the XML is parsed
array_push($this->genreArray,$attrs['term']);
//after I have parsed an entire "title" element, I iterate the array
foreach ($this->genreArray as $value) {
//never gets called - array seen as empty
$this->db->linkGenre($value,$this->title_uid);
}
2 - j'ai donc essayé le manuel PHP; recommandation rien
//declare empty
var $genreArray=array();
//later I add values one at a time as the XML is parsed
$this->genreArray[]=$attrs['term'];
//after I have parsed an entire "title" element, I iterate the array
foreach ($this->genreArray as $value) {
//never gets called - array seen as empty
$this->db->linkGenre($value,$this->title_uid);
}
3 - donc, finalement, j'ai essayé manuellement le suivi de l'indice de
//declare empty array
var $genreArray=array();
var $gi=0;
//later I add values one at a time as the XML is parsed
$this->genreArray[$this->gi++]=$attrs['term'];
//after I have parsed an entire "title" element, I iterate the array
foreach ($this->genreArray as $value) {
//never gets called - array seen as empty
$this->db->linkGenre($value,$this->title_uid);
}
Donc je suis totalement perplexe maintenant.
Quelqu'un a déclaré tableaux vides et remplis par la console?
(Tous les 3 de ces travaux par le web, j'ai donc besoin d'une console d'expert ici)
Merci pour le soutien, voici les coordonnées demandées;
php -v
PHP 4.4.9 (cli) (construite: 17 Sep 2008 12:02:18)
Copyright (c) 1997-2008 Le PHP Group
Zend Engine v1.3.0, le droit d'Auteur (c) 1998-2004 Zend Technologies
avec Zend Extension Manager v1.2.2, le droit d'Auteur (c) 2003-2007, par Zend Technologies
avec Zend Optimizer v3.3.3, le droit d'Auteur (c) 1998-2007, par Zend Technologies
Chaque extrait a été essayé dans une exécution séparée. Quels sont les détails à propos de la classe êtes-vous intéressé?
J'ai utilisé l'écho des déclarations de vérifier que le code est appelé comme prévu. Et si je frappe le script via une URL tout démarre bien (pour la première quelques milliers d'enregistrements jusqu'à ce que le délai d'attente).
Aucune erreur n'est levée, j'ai même essayé d'ajouter...
error_reporting(E_ALL);
ini_set('display_errors', true);
En effet, quel est le reste de la classe?
Quelles sont les valeurs que l' $attrs [term] détient?
OriginalL'auteur Eddie | 2009-12-22
Vous devez vous connecter pour publier un commentaire.
Il semble que votre ligne de commande et le serveur web PHP sont des versions différentes. Est votre de la CLI de PHP 4? La fonction
phpversion()
vous dira la version dans les deux CLI et web.Avez-vous vérifié votre journal d'erreur? Vous n'avez pas mentionné, mais ce serait le premier endroit à regarder.
La CLI a été php 4, en appelant php5 explicitement tout cuit, tout va bien! Merci!!!!
Encore le script doit fonctionner en PHP 4, étiez-vous à l'aide de SimpleXML ou de tout autre PHP 5 extension spécifique?
OriginalL'auteur Ben James
Cela semble bizarre. Quelle version de PHP étiez-vous à l'aide du script web et quelle est la version de la console?
Taper php -v vous dira la version.
OriginalL'auteur Anti Veeranna
Afin d'éviter la non-CLI délai d'attente vous pouvez faire quelque chose comme ceci:
Vous semblez être à l'aide de
var
au lieu depublic
pour la classe déclarations de propriété, qui, ensemble avec le fait que vous ne pouvez pas utiliser__construct()
rend-moi deviner, vous êtes à l'aide de PHP 4, est ce que le droit?Où est
$attrs['term']
déclaré?Essayer de faire
var_dump($attrs['term']);
pour voir ce qui arrive.Une autre chose qui n'a pas d'odeur de droit est le suivant:
$attrs['term']
semble être un tableau, mais vous n'êtes pas en boucle à travers elle. À moins que ces lignes sont dans une méthode séparée de son propre je pense que quelque chose est faux.Aussi, c'est le code que vous nous avez fourni une partie d'une classe? Juste pour faire sûr..
OriginalL'auteur Alix Axel
Essayez de supprimer
var
devar $genreArray=array();
J'ai eu le même problème et supprimer
var
fixe.OriginalL'auteur Jon