2010-12-26 44 views
14

Cách tốt nhất để thêm giá trị hoặc giá trị cụ thể vào mảng là gì? Kinda khó để giải thích, nhưng điều này sẽ giúp:PHP: Thêm chuỗi tiền tố vào giá trị mảng

<?php 
$myarray = array("test", "test2", "test3"); 
$myarray = array_addstuff($myarray, " "); 
var_dump($myarray); 
?> 

Những kết quả đầu ra:

array(3) { 
    [0]=> 
    string(5) " test" 
    [1]=> 
    string(6) " test2" 
    [2]=> 
    string(6) " test3" 
} 

Bạn có thể làm như vậy như thế này:

function array_addstuff($a, $i) { 
    foreach ($a as &$e) 
     $e = $i . $e; 
    return $a; 
} 

Nhưng tôi tự hỏi nếu có một cách nhanh hơn hoặc nếu chức năng này được tích hợp sẵn.

+0

hãy xem câu trả lời của tôi, không có cách nào nhanh hơn, thực sự có chức năng được xây dựng, nhưng việc triển khai này được chứng minh là chậm hơn –

Trả lời

30

Trong trường hợp bạn đang sử dụng một phiên bản PHP> = 5.3:

$array = array('a', 'b', 'c'); 
array_walk($array, function(&$value, $key) { $value .= 'd'; }); 
+0

Cảm ơn rất nhiều! – skeggse

+5

array_walk() trả lại boolean để mã này không hợp lệ – shfx

+0

Bạn đúng, đã chỉnh sửa, xấu của tôi. – Andre

3

Sử dụng array_walk. Trong PHP 5.3, bạn có thể sử dụng một ẩn danh để định nghĩa lại hàm gọi đó. Vì bạn muốn sửa đổi mảng thực tế, bạn phải chỉ định tham số đầu tiên của hàm gọi lại là tham chiếu chéo.

13

Sử dụng array_map()

$array = array('a', 'b', 'c'); 
$array = array_map(function($value) { return ' '.$value; }, $array); 
+0

Điều này sẽ không tạo ra một mảng hoàn toàn mới? – skeggse

2

Dưới mã sẽ thêm "prefix_" như một tiền tố cho mỗi giá trị phần tử:

$myarray = array("test", "test2", "test3");  
$prefixed_array = preg_filter('/^/', 'prefix_', $myarray); 

Output sẽ là:

Array ([0] => prefix_test [1] => prefix_test2 [2] => prefix_test3) 
+2

Vui lòng thêm một số giải thích. Vì bạn đã sử dụng các tên biến và các chữ cái không có sự tương ứng với câu hỏi, đó là ít nhất bạn có thể làm. – trincot

Các vấn đề liên quan