Array içeriği ile başa çıkmak

6 Cevap

Ben bir dize olarak tutulan değerlerin bir virgülle ayrılmış listesi var:

blue, left-right-middle, panther.png

Sonra üç işlevi vardır:

  1. Setleri arka plan rengi

  2. Düzeni için sütunların sırasını ayarlar

  3. Bir profil resmi Setleri

Şu anda ben ayrı dizeleri içine değerleri patlamaya bir for each döngü kullanabilirsiniz, ama nasıl daha iyi sonuçlar kontrol edebilirsiniz.

Ör

First result of array = Setleri arka plan rengi
    Second result of array = Sets order of columns
    Third results of array = profile image

Zaten 3 ayrı değişkenlere dizinin sonuçlarını yazabilirsiniz, bu yüzden her bir fonksiyonun değişkeni atayabilirsiniz?

Şöyle:

    First result of array = $backgroundColour
    Second result of array = $orderColumns
    Third results of array = $profileImage

Herhangi bir fikir nasıl bu konuda gidebilir?

6 Cevap

As of PHP5.3 You could use str_getcsv() to parse a CSV string into an array.
Also, have a look at list to assign variables as if they were an array.

list( $color, $order, $image ) = str_getcsv($csvString);

Önce PHP5.3 için, size explode yerine str_getcsv içinde kullanmak istiyorum. Aşağıda kurcalamak @ tarafından örneğe bakın.

str_getcsv explode üzerinde avantajı size vermek için enclosure ve escape karakter, delimiter belirtebilirsiniz olduğunu sonuç üzerinde daha fazla kontrol.

str_getcsv otomatik olarak boşluk kırpmak kadar akıllıdır. Listelenen değerler içerecektir

string(4) "blue", string(17) "left-right-middle", string(11) "panther.png"`

Ancak, denetim maliyeti hız yapar ekledi. explode ölçüde (~ 6 benim makinede kez 8) hızlı verilen örnek dize içindir.

Sen explode faydalanmak ve list olabilir:

$string = 'blue, left-right-middle, panther.png';
list($backgroundColour, $orderColumns, $profileImage) = explode(', ', $string);

Eğer php str_getcsv işlevini kullanabilirsiniz.

Kılavuzunu bakınız: http://www.php.net/manual/en/function.str-getcsv.php

Bu aşağıdaki kodu kullanabilirsiniz.

$ String = 'mavi, sağ-sol-orta, panther.png';

list ($ renk, $ konum, $ image) = bölünmüş (',', $ string);

'Arka plan rengi:' echo. . $ Renk "
\ n";

'Sütun düzeni:' echo. $ Böl. "
\ N";

'Profil resmi:' echo. $ Resim. "
\ N"

Sadece farklı olmak, kullanmak olabilir sscanf

$string = 'blue, left-right-middle, panther.png';

sscanf( $string, '%s, %s, %s', $backgroundColour, $orderColumns, $profileImage );