Lần đầu tiên tôi đang cố gắng sử dụng các động create_function
, và cho đến nay, không có nhiều thành công :-)Php - hiểu biết create_function() - đi qua đơn giản biến
chức năng của tôi là thế này:
function o99_brsa_custom_widgets() {
global $wp_meta_boxes;
global $o99_brsa_options;
for($i=0; $i> count($o99_brsa_options[content]); $i++) {
$widgt_id = 'o99_dashboard_widget_dyn' . $i;
$widgt_name = 'obmek99 widget name' . $i;
$out = $o99_brsa_options[content][$i];
$f = create_function(' $out ',' global $out; echo $out;');
do_the_widgets($widgt_id, $widgt_name, $f);
}
}
Hành động do_the_widgets()
chỉ chấp nhận tiếng vang trực tiếp và in nội dung của tiện ích.
$o99_brsa_options[content]
là mảng được xác minh với $i
yếu tố (mỗi nội dung là nội dung).
Điều lạ là $i
đang hoạt động trên $widgt_id
và $widgt_name
nhưng trên create_function()
Tôi nhận được cùng một giá trị được in trong tất cả các tiện ích con. (echo $out
)
Dường như tôi không biết làm thế nào để vượt qua một biến đơn giản với chức năng mới (Tôi đang sử dụng create_function inside global(), nhưng nó giúp ít nhất là cho bây giờ.
Vì vậy, là những gì sai lầm của tôi/hiểu lầm/lạm dụng ngay bây giờ :-) ??
Nếu '$ out' sắp trở thành toàn cầu thì bạn sẽ chuyển nó làm đối số? – prodigitalson
Bởi vì bằng cách nào đó, nếu tôi không, không có gì được in .. –
Vâng, nếu bạn sẽ sử dụng nó như là một toàn cầu thì giá trị của nó sẽ được cấu hình bên ngoài chức năng, và sau đó bạn sẽ sửa đổi nó bên trong (hoặc không) và sửa đổi sau đó sẽ được áp dụng trên toàn cầu không chỉ bên trong. Nếu bạn chỉ cần vượt qua trong một đối số sau đó loại bỏ toàn cầu. Nếu bạn cần phải làm cả hai thay đổi tên của đối số và sau đó có nó sửa đổi '$ out' bên trong chức năng. Ví dụ: 'create_function ('$ arg', 'global $ out; echo $ out. $ Arg;');' – prodigitalson