Có bất kỳ chức năng nào để phát hiện và mã hóa đệ quy mảng đa chiều trong PHP không?Implode và Explode Mảng đa chiều
Trả lời
Bạn có thể làm điều này bằng cách viết một hàm đệ quy:
function multi_implode($array, $glue) {
$ret = '';
foreach ($array as $item) {
if (is_array($item)) {
$ret .= multi_implode($item, $glue) . $glue;
} else {
$ret .= $item . $glue;
}
}
$ret = substr($ret, 0, 0-strlen($glue));
return $ret;
}
Đối với nổ, điều này là không thể, trừ khi bạn đưa ra một số loại cấu trúc chính thức đối với chuỗi, trong trường hợp bạn là vào lĩnh vực serialization , đối với các chức năng đã tồn tại: serialize, json_encode, http_build_query trong số các chức năng khác.
Ah! Serialize là những gì tôi không biết tôi cần! – HyderA
Bất kỳ cách nào để có nó chỉ implode một số cột bên trong mảng mảng? như thế này, nhưng chỉ in ra các trường db? –
Bạn có thể sử dụng array_walk_recursive
để gọi hàm đã cho trên mọi giá trị trong mảng đệ quy. Làm thế nào mà chức năng trông giống như phụ thuộc vào dữ liệu thực tế và những gì bạn đang cố gắng làm.
Tôi đã tạo hai hàm đệ quy để kích hoạt và phát nổ. Kết quả của multi_explode
có thể không hoạt động như mong đợi (các giá trị đều được lưu trữ ở cùng một cấp thứ nguyên).
function multi_implode(array $glues, array $array){
$out = "";
$g = array_shift($glues);
$c = count($array);
$i = 0;
foreach ($array as $val){
if (is_array($val)){
$out .= multi_implode($glues,$val);
} else {
$out .= (string)$val;
}
$i++;
if ($i<$c){
$out .= $g;
}
}
return $out;
}
function multi_explode(array $delimiter,$string){
$d = array_shift($delimiter);
if ($d!=NULL){
$tmp = explode($d,$string);
foreach ($tmp as $key => $o){
$out[$key] = multi_explode($delimiter,$o);
}
} else {
return $string;
}
return $out;
}
Để sử dụng chúng:
echo $s = multi_implode(
array(';',',','-'),
array(
'a',
array(10),
array(10,20),
array(
10,
array('s','t'),
array('z','g')
)
)
);
$a= multi_explode(array(';',',','-'),$s);
var_export($a);
Tôi đã phát hiện ra rằng var_export là tốt nếu bạn cần một chuỗi đại diện có thể đọc được (nổ) của mảng đa chiều mà không tự động in các giá trị như var_dump.
- 1. Cách dễ nhất để implode() một mảng hai chiều?
- 2. array_filter và mảng đa chiều
- 3. Serialize hoặc Implode
- 4. Đa chiều std :: mảng
- 5. Mảng đa chiều JavaScript
- 6. Powershell đa chiều Mảng
- 7. jquery.each mảng đa chiều
- 8. Java: mảng đa chiều vs Một chiều
- 9. Nhân bản mảng đa chiều
- 10. Mảng đa chiều so với nhiều mảng
- 11. NumPy mảng đa chiều slicing
- 12. Biến mảng đa chiều thành mảng một chiều
- 13. Mảng đa chiều trong Python
- 14. C++ đa chiều mảng khởi
- 15. array_diff() với mảng đa chiều
- 16. Mẫu biến thể Mảng đa chiều Mảng
- 17. array_map cho mảng đa chiều
- 18. array_slice trong mảng đa chiều?
- 19. SetLength trên mảng đa chiều
- 20. Implode một mảng với jQuery/Javascript?
- 21. Dữ liệu mã hóa từ mảng đa chiều
- 22. NumPy: Kết nối đa chiều và unidimensional mảng
- 23. Cách tạo và sử dụng mảng đa chiều trong Scala?
- 24. Python: cắt một mảng đa chiều
- 25. Jinja2: Cách tạo mảng javascript đa chiều?
- 26. PHP, Merge phím trong mảng đa chiều
- 27. mảng đa chiều thực sự là gì?
- 28. PHP: Hợp nhất 2 Mảng đa chiều
- 29. Java serialization của mảng đa chiều
- 30. Multi-sắp xếp một mảng đa chiều
Tôi nghĩ các bạn đã nhảy súng. Câu hỏi bạn đánh dấu là câu trả lời không chính xác là câu trả lời cho câu hỏi này. Bạn nên đọc trước khi nhấn nút dupe đó. Nó không phải là khó. – Jeffz
Câu hỏi này được đánh dấu không chính xác là bản sao của [implode-data-from-a-multi-dimensional-array] (http://stackoverflow.com/questions/16710800/implode-data-from-a-multi-dimensional- mảng). Câu hỏi này là về imploding/exploding nói chung trong khi câu hỏi còn lại là về imploding một khóa trong một mảng đa chiều. –
json_encode/json_decode cũng là cách tốt để đóng gói, giải nén và lưu trữ các mảng đa chiều. json_encode có thể mã hóa các mảng như '['foo' => ['bar' => 1, 'baz' => [2,3]]]' và sẽ trả về một chuỗi như '{" foo ": {" bar ": 1, "baz": [2,3]}} '. json_decode sau đó có thể trả về chuỗi được mã hóa JSON làm đối tượng. Dữ liệu JSON có ích khi chuyển dữ liệu từ PHP sang Javascript dưới dạng JSON ('stdClass Object ([foo] => stdClass Object ...}'). –