10/10/2018, 09:31

PHP - Giúp mình với.

Mình muốn hỏi về vấn đề split, explode...1 chuỗi trong php thành nhiều aray.
Giả sử như mình có đoạn code như thế này:
PHP Code:
$str 'one|two;one|two.one|two.one|two;one|two';
$strexplode explode(';'$str); 
thì result sẽ là:
PHP Code:
array 
   ***91;
0***93; => one|two
   
***91;1***93; =>one|two.one|two.one|two
   
***91;2***93; =>one|two 
Ý mình muốn nó sẽ ra như thế này thì phải làm sao, mong các bạn giúp đỡ
PHP Code:
array
   ***91;
0***93; array
          ***91;
0***93; => one
          
***91;1***93; => two
   
***91;1***93; array
          ***91;
0***93; array
                 ***91;
0***93; one
                 
***91;1***93; two
          
***91;1***93; array
                 ***91;
0***93; one
                 
***91;1***93; two
          
***91;2***93; array
                 ***91;
0***93; one
                 
***91;1***93; two
   
***91;2***93; array
          ***91;
0***93; => one
          
***91;1***93; => two 
Mình đã thử explode cách này rồi, nhưng ko có kết quả
PHP Code:
$str 'one|two;one|two.one|two.one|two;one|two';

$strexplode explode(';'$str);
$length count($strexplode);
for (
$i 0$i $length$i++) {
    
$strexplode***91;$i***93; = array();
    
$strexplode2 explode("."$strexplode***91;$i***93;);
    
$length2 count($strexplode2);
    for (
$j 0$j $length2$j++) {
        
$strexplode***91;$i***93;***91;$j***93; = $strexplode***91;$j***93;;
    }
return 
$strexplode;

Trong lúc vọc code thì "có lần" mình print_r được $strexplode[$i][$j] nhưng $strexplode thì ko được.
Nếu có thể thì các bạn chỉ giúp mình cách fetch các array này vào 1 bảng mà cái bảng này ko cần tạo trước, khi nào chạy thì mới create table => fetch data.
Mình thấy người ta thường dùng javascript, nhưng mình thấy kỳ kỳ sao đó, ko lẽ php chỉ có thể in ra 1 đống bùi nhùi, rồi js mới lấy cái đống bùi nhùi này cắt tỉa cho đẹp sao?
Mình vọc code chỉ vì thích thôi, chứ kiến thức về web thì thực sự mù tịt, nên nếu các bạn giúp được mình thì cố gắng giải thích thêm cho mình dễ hiểu.
Cám ơn các bạn!
fotech_nd viết 11:46 ngày 10/10/2018
Dùng code sau
PHP Code:
$str 'one|two;one|two.one|two.one|two;one|two'

function 
myExplode($value$separators = array(';''.''|'))
{
    foreach (
$separators as $separator) {
        if (
strpos($value$separator) !== false) {
            return 
array_map('myExplode'explode($separator$value));
        }
    }
    return 
$value;
}

$myArray myExplode($str);

print_r($myArray); 
Chú ý:

- Thứ tự ';', '.', '|' của tham số mặc định $separators
- Ưu điểm: Code ngắn, chạy nhanh, dùng recursive nên áp dụng được cho n cấp
- Nhược điểm: Tính thừa kế của hàm là ko có (quá chuối) - nên khi dùng phải khéo vận dụng một chút
Baby_big viết 11:41 ngày 10/10/2018
co pac nao biet ve quan tri mang jup pe voi
dinhanhency viết 11:44 ngày 10/10/2018
Hàm tách mảng theo tham số truyền vào là ký hiệu cần tách, đến khi nào đạt mục đích thì thôi.
namduong8889 viết 11:36 ngày 10/10/2018
Bạn dùng mảng hai chiều dạng này đi array[x][y]

khi đó code như này:
Code:
$str = 'one|two;one|two.one|two.one|two;one|two'; 
$array=explode(";",$str);
//tách tiếp
for ($i=0,$i++,$i<3){
$array[$i]=explode("|",$array[$i]);
}
Mình chưa thử mà chắc là được
Bài liên quan
0