Hangi PHP version str_split için gereklidir?

7 Cevap php

Ben dreamhost benim sunucuya tekrar giriş ve ben kullanmak olamazdı bulunan bazı scripts.And sınamak str_split. Tanımsız fonksiyon mesajı given.I sunucu versiyonunu kontrol ve PHP Sürümü Ben sadece gerekli olan sürümü merak 5.2.12.And nedir? Teşekkürler oldu.

Deneme kodunda:

<?php
$arr = str_split("lsdjflsdjflsdjflsdjfl");
print_r($arr);
?>

Mesaj:

Fatal error: Call to undefined function:  str_split() in /test.php on line 3

Justin Johnson @ düzenle

Ben sunucunun sistem dizini kontrol, ve ben Dreamhost.In kullanıcının webroot PHP iki sürümü vardır bulundu, dosya PHP5'ta tarafından işlenecek ve ben webroot.And bir phpinfo.php koyarak php 5.2.12 var neden buysa php dosyaları doğrudan php test.php, ben kullanmak ben error.When var 4.x worked.That 'nin nedeni başka bir php sürümünü kullanarak komut satırında koştu

/usr/local/php5/bin/php test.php

Her şey yolunda.

7 Cevap

Aksine kullanımı daha str_split, doğrudan dize karakterler arasında yineleme için genellikle çok kolay:

$s="abc";
$i=0;
while(isset($s[$i])) {
    echo $s[$i++]." ";
}

bakın?

İlk kapalı: PHP belgelerine her zaman doğrudan işlev adı altında bu işlevin dokümantasyon sayfasından her fonksiyon için gerekli olan hangi sürümü diyecekler.

Bu bir. Htaccess dosyası yere yolunda olduğunu ve kullanılacak PHP bir önceki sürümü (<5) neden olması mümkündür. Çift (ya da üçlü) size uygun PHP sürümü çalıştığından emin olmak için kontrol etmek için, str_split çağrı hattı üzerinde bu kodu yerleştirebilirsiniz

echo "version:", phpversion(), 
    "<br/>\nstr_split exists? ", 
    function_exists("str_split") ? "true" : "false";

Gösterildiği gibi Ancak, Col. Shrapnel, o dizenin karakter üzerinde yineleme için bireysel karakter dizisi için bir dize dönüştürmek için gerekli değildir. Dizeleri de böylece (: str_split($s, 3) Eğer sabit uzunlukta parçalar halinde segmente dize gerekmedikçe, örneğin) str_split gereksiz ve savurgan çağrısı yapmadan, geleneksel yineleme yöntemlerle iterated

foreach ( str_split($s) as $c ) { 
    // do something with character $c
}

ile ikame edilmiş olabilir

$s = "lsdjflsdjflsdjflsdjfl";

for ( $i=0; isset($s[$i]); ++$i ) {
    // do something with character $s[$i]." ";
}

hangi eşit değilse daha açıktır.

Eğer 2008 Eylül'de önce etki yarattı eğer dreamhost wiki göre,, kontrol panelinden elle php5 geçmek gerekir.

http://wiki.dreamhost.com/Installing_PHP5#Using_DreamHost.27s_PHP_5

PHP 5 was added to all plans by DreamHost as of June 2005. As of September 2008, support for PHP4 was discontinued, so you can no longer switch back to PHP 4 from PHP 5 from the panel.

If you haven't switched to PHP 5 yet, you can do this in the Control Panel. But, again, you will not be able to switch back to PHP 4 after switching to PHP 5.

Here's how to switch from PHP 4 to PHP 5:

  1. DreamHost Kontrol Paneline giriş yapın.
  2. Domains tıklayın, ardından Etki Yönet.
  3. Click the wrench icon next to the domain you want to activate PHP 5 on (under the Web Hosting column).
  4. Açılan menüden PHP 5.x.x seçin.
  5. Click Change fully hosted settings now! at the bottom of the section.
  6. Repeat steps 3-5 for each additional domain you want to activate.

Ayrıca ile php sürümünü kontrol edebilir

<?php  
   phpinfo();
?>

Gerekli sürümünde PHP 5 veya. Yani teorik olarak program çalışması gerekir.

Eğer str_split işe alamıyorsanız, sadece bir dizi olarak bir dize kullanabilirsiniz:

$stuff = "abcdefghijkl";
echo $stuff[3];

üretecek

d

Bu yöntem zaten, hızlı. Sizin ihtiyaçlarınıza uygun olmadığını bilmiyorum, ama yok, ben yardımcı olur umarım!

Kodunuzu şey olabilir. Nasıl bir 10 satır komut dosyası veya 2000 satırı komut değil biliyor musunuz?

Sen tek karakter içine bir dizi bölmek () preg_split kullanabilirsiniz, ancak başlangıç ​​ve sonunda ekstra boş bir dize döndürür.

$a = preg_split("//","abcdefg");
echo json_encode($a);

yazdırır:

["","a","b","c","d","e","f","g",""]