2016-05-21 60 views
0

假設我有一個數組,看起來像這樣:轉換數組字符串不使用破滅()函數

Array 
(
    [0] => Model Number 
    [1] => 987 
    [2] => Interface 
    [3] => 987 
    [4] => GPU 
    [5] => 98 
    [6] => Core Clock 
    [7] => 79 
    [8] => Boost Clock 
    [9] => 87 
    [10] => CUDA Cores 
    [11] => 987 
) 

我想因此它需要這種格式是一個字符串來連接它:

Array { 
    Model Number: 987; 
    Interface: 987; 
    GPU: 98; 
    Core Clock: 79; 
    ... And so on ... 
} 

這個implode函數並不適合這個,因爲我需要在每兩個索引之後有一個;。 我所有使用循環的嘗試都失敗了。 (未定義索引和內存不足錯誤)

在此先感謝您的幫助!

+0

請出示你說什麼,你已經嘗試過。 –

回答

2

這裏有一個簡單的方法:

$string = ""; 

foreach(array_chunk($array, 2) as $value) { 
    $string .= "{$value[0]}: {$value[1]};\n"; 
} 
0

這應該工作:

PHP

$specs = []; 
$count = count($array); 
for ($i = 0; $i < $count $i+=2) { 
    $specs[] = $array[$i] . ': ' . $array[$i + 1]; 
} 

這將輸出:

array(6) { 
    [0]=> 
    string(17) "Model Number: 987" 
    [1]=> 
    string(14) "Interface: 987" 
    [2]=> 
    string(7) "GPU: 98" 
    [3]=> 
    string(14) "Core Clock: 79" 
    [4]=> 
    string(15) "Boost Clock: 87" 
    [5]=> 
    string(15) "CUDA Cores: 987" 
} 

EvalIn

+1

爲了獲得更好的性能,最好將count()放在for循環之外的單獨變量中。 Count()現在在每次迭代中調用。在這種情況下,可以對大數組產生影響。 – Nitin

0

假設這是你的陣列

$array = array(
    'Model Number', 
    987, 
    'Interface', 
    987, 
    'GPU', 
    98, 
    'Core Cloc', 
    79, 
    'Boost Clock', 
    87, 
    'CUDA Cores', 
    987 
); 

您可以遍歷列表,並作出新的數組

$result = array(); 
foreach($array as $key => $value) 
    if($key % 2 == 0) // Every two index 
     $result[$key] = $value . ": "; 
    else if(isset($result[$key-1])) 
     $result[$key-1] .= $value; 

其結果將是

array(6) { 
    [0]=> 
    string(16) "Model Number:987" 
    [2]=> 
    string(13) "Interface:987" 
    [4]=> 
    string(6) "GPU:98" 
    [6]=> 
    string(12) "Core Cloc:79" 
    [8]=> 
    string(14) "Boost Clock:87" 
    [10]=> 
    string(14) "CUDA Cores:987" 
} 
0
<?php 

$array = Array 
(
    0 => 'Model Number', 
    1 => 987, 
    2 => 'Interface', 
    3 => 987, 
    4 => 'GPU', 
    5 => 98, 
    6 => 'Core Clock', 
    7 => 79, 
    8 => 'Boost Clock', 
    9 => 87, 
    10 => 'CUDA Cores', 
    11 => 987 
); 

$imploded = array_map(function ($a) { 
    return implode($a, ': '); 
}, array_chunk($array, 2)); 


print_r($imploded);