2016-03-27 21 views
1

Açıklamak için belki çok uzun ve garip olan bir şey yapıyorum, ancak temelde bir dizeyi karmaşık bir şekilde bir dizide onları eşleştirecek şekilde eşleştirdim. Bu nasıl olacağı konusunda bir örnektir: Şimdi başarıyla tam olarak istediğim şekilde dize kadar karışık ettikÇok boyutlu dizi satırları ve bunların ilgili öğeleri sayılıyor mu?

field[26][25]='x'; 
field[24][23]='z'; 
field[28][29]='y'; 

, ben doğrusal sonucu yeniden inşa etmek gerekiyor.

Bu nedenle, dizinin 1. satırını almalı ve bunları bir dizeye birleştirmek için bu satırdaki tüm öğeler arasında geçiş yapmalıyım. Daha sonra aynı şeyi sıra 2 ile ve büyük bir doğrusal dizi oluşturmak için yapın.

Bu satırlarda kaç tane satır ve öğe olduğumu nasıl sayabilirim? Hayatım boyunca, bunu çoklu diziler için nasıl yapılacağını bulmaya bile başlayamıyorum. u_mulder orada sağlam cevap var @

Tür

+1

'foreach' ve' –

+0

Tam olarak ne istiyorsun implode'? Her satırdaki öğeleri saymak veya belirli bir sıradaki tüm değerleri bir dizeye eklemek için? İki görev zorunlu olarak ilgili değildir; Değerleri saymadan katılabilirsiniz. – axiac

cevap

0

görüyor. elementlerin sayısı için, sadece derdim: elementlerin birleştirme için

$total = 0; 
foreach($matrix as $row) $total += count($row); 

, sadece derdim:

$concat = ''; 
foreach($matrix as $row) $concat .= implode('', $row); 

Bob senin amcan. Ama gerçekten böyle garip bir mashup için geçerli bir kullanım durumu var mı?

0
$field[26][25]='x'; 
$field[24][23]='z'; 
$field[28][29]='y'; 
$field_string = ''; 
array_walk_recursive ($field , function($item, $key) use (&$field_string){ 
if(!is_array($item)){ 
    $field_string .= $item; 
} 
}); 
echo $field_string; 

Dürüst olmak gerekirse, bu biraz kafa karıştırıcı. Ben fazla bilgiye gerek ama bu

0

boş bir dizeye ile başlar ve kullanabilirsiniz yardımcı olup olmadığını bana bildirin olabilecek iki her satırda hatları ve öğeleri üzerinde yineleme ve dize her öğeyi eklemek için foreach iç içe:

$result = ''; 
foreach ($fields as $row) { 
    foreach ($row as $item) { 
     $result .= $item; 
    } 
} 

Veya tüm iç foreach'u $result .= implode('', $row); ile değiştirebilirsiniz.

Hatta bir dizeye array_map() tarafından üretilen sonra array_map()implode() dizi için çağrı ile dış foreach değiştirebilirsiniz:

$string = implode(
    '', 
    array_map(
     function (array $items) { 
      return implode('', $items); 
     }, 
     $fields 
    ) 
);