Hướng dẫn compact trong php

Hàm compact() sẽ trả về một mảng mới, được kết hợp bởi biến có trùng tên với VALUE trong mảng gốc ban đầu

Ví dụ minh họa

Và kết quả trả về sẽ là

Array
(
    [event] => SIGGRAPH
    [city] => San Francisco
    [state] => CA
)

Ví dụ khi mảng gốc có KEY khác biệt

"varmore");

$result = compact("event", $location_vars);
print_r($result);
?>

Trong trường hợp này, bạn có thể thấy biến và giá trị của $state không được khởi tạo vì đã có biến $varmode với KEY = 1, do vậy $state sẽ không tồn tại trong mảng mới.

Và kết quả trả về sẽ là

Array ( [event] => SIGGRAPH [city] => San Francisco [varmore] => helllo )

Ứng dụng

Bạn có thể sử dụng compact() để hiển thị nhanh giá trị của một mảng, để debug nhanh hơn


gives

Array
(
    [count] => 70
    [acw] => 9
    [cols] => 7
    [coldepth] => 10
)

Bạn có thể sử dụng compact() để tạo mọt mảng mới kết hợp với giá trị mới và mảng cũ


Example #2 above will output:

Array
(
    [event] => SIGGRAPH

    [location_vars] => Array
        (
            [0] => city
            [1] => state
        )

)

Các hàm liên quan

  • Hàm extract() nhập một biến bên ngoài vào một mảng theo KEY của phần tử đó.

Hi vọng với bài viết này, bạn đã hiểu rõ cách sử dụng hàm compact() trong PHP. Nếu thấy bài viết hay và ý nghĩa, hãy like và chia sẻ với bạn bè để mọi người cùng nhau học tập nhé.

Như vậy để truyền dữ liệu ra View (Passing Data To Views) chúng ta có các cách như sau đây để trên view welcome.blade.php có thể sử dụng được  được biến

return view('welcome', [
		'name' => 'Chung Nguyễn'
	]);

Cách 1: Truyền vào 1 mảng

return view('welcome', [
		'name' => 'Chung Nguyễn'
	]);

Nếu cần truyền thêm dữ liệu thì thêm vào mảng trên bây nhiêu thôi.

Cách 2: Sử dụng with method

return view('welcome')->with('name', 'Chung Nguyễn');

Với việc dùng view helper function, chúng ta hoàn toàn có thể pass data to views 1 cách dễ dàng thông qua phương thức with, cũng giống như ở trên nhưng code chúng ta sẽ trở nên sáng sủa, dễ nhìn hơn phải k nào 😁

Cách 3: Lồng compact

$name = 'Chung Nguyễn';
return view('welcome', compact('name'));

Cách này trong Laravel document không có nhắc tới, mình hay dùng cách này vì số lần gõ phím là ít nhất hehe 😆

Nếu muốn truyền thêm nhiều dữ liệu hơn thì thêm như dưới đây

$name = 'Chung Nguyễn';
$age = 25;
return view('welcome', compact('name', 'age'));

Cách 4: Chia sẻ dữ liệu cho toàn bộ Views

Laravel cung cấp phương thức

return view('welcome', [
		'name' => 'Chung Nguyễn'
	]);
1 chia sẻ dữ liệu cho toàn bộ Views (Sharing Data With All Views) hay nói cách khác là biến toàn cục.

Thông thường, bạn nên đặt

return view('welcome', [
		'name' => 'Chung Nguyễn'
	]);
1 trong method
return view('welcome', [
		'name' => 'Chung Nguyễn'
	]);
3 của 
return view('welcome', [
		'name' => 'Chung Nguyễn'
	]);
4 chẳng hạn
return view('welcome', [
		'name' => 'Chung Nguyễn'
	]);
5 hoặc trong 
return view('welcome', [
		'name' => 'Chung Nguyễn'
	]);
6 function của Controller

Cách 5: Sử dụng composer truyền dữ liệu cho một số views được chỉ định

Giống như cách 4 ở trên bạn có thể dùng view composer để truyền dữ liệu cho một số views nhất định, trong

return view('welcome', [
		'name' => 'Chung Nguyễn'
	]);
7 hàm
return view('welcome', [
		'name' => 'Chung Nguyễn'
	]);
3

// Khai báo class App\Http\ViewComposers\ProfileComposer
// sẽ được gọi khi 1 trong 2 view profile, profile2 được render
View::composer(
    ['profile', 'profile2'], 'App\Http\ViewComposers\ProfileComposer'
);

// Sử dụng Closure callback nhanh gọn
View::composer(['profile', 'dashboard'], function ($view) {
    $view->with('name', 'Chung Nguyễn');
});

Với cách sử dụng composer ở trên thì bạn phải tạo một class mới có tên 

return view('welcome', [
		'name' => 'Chung Nguyễn'
	]);
9 nằm trong thư mục
return view('welcome')->with('name', 'Chung Nguyễn');
0

with('name', 'Chung Nguyễn');
    }
}

🔷🔷🔷🔷🔷🔷🔷🔷🔷🔷

Ủng hộ Chung Nguyễn Blog

Chung Nguyễn Blog sử dụng FlashVPS - Dịch vụ quản trị máy chủ chuyên nghiệp để quản lý VPS

#FlashVPS là dịch vụ cloud panel trên nền tảng web hỗ trợ khách hàng:

  • * Quản lý máy chủ số lượng nhiều
  • * Không có kinh nghiệm quản lý máy chủ
  • * Thích sử dụng giao diện web đơn giản, trực quan hơn terminal
  • * Quá nhàm chán với việc ghi nhớ và lặp lại việc gõ các câu lệnh
  • * Muốn tự động hóa mọi thao tác
  • * Muốn tiết kiệm thời gian quản trị máy chủ
  • * Muốn tiết kiệm tiền bạc, nhân lực quản trị máy chủ
  • 👉 https://flashvps.dev

Các bài viết trên website thường xuyên được đăng tải và cập nhật trên trang Facebook Chung Nguyễn Blog hãy tặng cho Chung một LIKE nhé! Mãi yêu các bạn!