Boş diziyi bildirmek, doldurmak ve sıkıntılar yineleme - PHP

4 Cevap php

Ben Netflix katalog okumak ve benim DB doldurmak için bir senaryo yazdı. Everything worked fine as a web script (zaman aşımı hariç) bu yüzden calling directly from the console kaymıştır.

I) artık olarak adlandırılan (fakat bu kolay bir fonksiyonu olarak sınıf adını kullanarak giderildiği oldu ediliyor __ yapı gibi birkaç tuhaflıklar, (fark ettim.

Şimdi can't get my arrays to work as before, burada genel bir fikir.

(Aslında ben birkaç kombinasyonları denedim, o yüzden hepsini paylaşacağım)

1 - Bu sadece iyi web script sürümünde çalıştı, artık konsoldan arayarak çalışır

//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 - bu yüzden PHP manuel denedim; öneri - hiçbir şey

//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 - sonunda ben el dizin izleme çalıştı

//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);
}

Yani tamamen şimdi stumped.

Herkes boş diziler ilan ve konsol üzerinden doldurulan?

(Tüm bu 3 web üzerinden çalışır - bu yüzden burada bir konsol uzmanı gerekir)


Thanks for the support, here are the additional details requested;

php-v

PHP 4.4.9 (cli) (built: Sep 17 2008 12:02:18) Copyright (c) 1997-2008 The PHP Group Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies with Zend Extension Manager v1.2.2, Copyright (c) 2003-2007, by Zend Technologies with Zend Optimizer v3.3.3, Copyright (c) 1998-2007, by Zend Technologies


Her pasajı ayrı vadede denendi. İlgilendiğiniz sınıfı hakkında hangi detayları nelerdir?

Beklediğim gibi kod çağrıldığını olduğunu doğrulamak için echo ifadeleri kullandık. Bir URL yoluyla komut vurmak Ve her şey (zaman aşımı kadar ilk birkaç bin kayıtları için) para cezası başladı.


Hayır hataları bile ekleyerek denedim, atılan ediliyor ...

error_reporting(E_ALL);
ini_set('display_errors', true);

4 Cevap

I) artık çağrıldığını (ancak bu kolay bir fonksiyonu olarak sınıf adını kullanarak remidied oldu __ yapı gibi birkaç tuhaflıklar, (fark ettim.

Komut satırı ve web sunucusu PHP farklı sürümleri gibi geliyor. CLI'nin PHP 4 mi? Fonksiyonu phpversion() CLI ve web hem size versiyonunu anlatacağım.

Eğer hata günlüğünü kontrol ettiniz mi? Bunu söz etmedi, ama bakmak için ilk yer olacaktır.

I noticed a few oddities, like __construct() no longer being called (but that was easily remidied using the class name as a function.

Bu garip görünüyor. Ne PHP version web komut kullanarak ve konsolda hangi sürümünü edildi?

Php-v yazarak size versiyonunu anlatacağım.

To avoid the non-CLI timeout you can do something like this:

set_time_limit(0);


Eğer '__construct() Seni tahmin yapar kullanamazsınız gerçeği ile birlikte, var yerine sınıf özellik bildirimleri için public kullanılarak gibi görünüyor PHP 4 ile yeniden, bu doğru mu?

Nerede $attrs['term'] ilan edilir?

var_dump($attrs['term']); ne kadar gelir görmek için yapıyor deneyin.

Doğru kokmuyor Bir başka şey şu satır:

array_push($this->genreArray,$attrs['term']);
$this->genreArray[]=$attrs['term'];
$this->genreArray[$this->gi++]=$attrs['term'];

$attrs['term'] bir dizi gibi görünüyor, ama bunun üzerinden döngü değildir. Bu satırları o kendi ayrı bir yöntemde sürece ben bir şey yanlış olduğunu düşünüyorum.

Ayrıca, bize bir sınıfın parçası sağladı kodu? Sadece emin olmak için ..

var var $genreArray=array(); dan kaldırmayı deneyin

Ben aynı sorunu vardı ve çıkarmadan var düzelttim.