Когда я должен var_export (…, TRUE), когда FALSE?

У меня есть массив, который я хочу записать в файл. Этот файл будет включен в другой скрипт, а массив прочитан и обработан.

Массив содержит числа с плавающей запятой, округленные до двух десятичных знаков, используя number_format(round($number, 2), 2, '.', '') (чтобы сохранить нули):

print_r($array,true);

Array
(
[0] => Array
(
[0] => 320
[1] => 128
[2] => 4.10
[3] => 4.10
)

[1] => Array

etc.

Когда я var_export массив, настройка $return = FALSE, он экспортируется с номерами с фиксированной запятой, заключенными в кавычки:

$data = '<?php $array =' . var_export($array, FALSE) . '; ?>';
file_put_contents ($filename, $data);

array (
0 =>
array (
0 => 320,
1 => 128,
2 => '4.10',
3 => '4.10',
),
1 =>

etc.

Когда я var_export с $return = TRUE, кавычек нет:

$data = '<?php $array =' . var_export($array, TRUE) . '; ?>';
file_put_contents ($filename, $data);

array (
0 =>
array (
0 => 320,
1 => 128,
2 => 4.10,
3 => 4.10,
),
1 =>

etc.

Из тестов я знаю, что оба кода будут выполняться одинаково в моей системе. Так чего мне не хватает? Когда я должен использовать TRUE и когда FALSEи какова цель этих кавычек?

2

Решение

Второй параметр определяет, var_export вернет свое представление значения, или echo это напрямую.

Посмотрите на этот пример:

$x = array(1);
$r_false = var_export($x, false);  // array ( 0 => 1, )
$r_true = var_export($x, true);    // **nothing is printed**
var_export($r_false);              // NULL
var_export($r_true);               // 'array ( 0 => 1, )'

Оба приведенных вами примера должны работать, но я был бы очень удивлен, если бы они создавали один и тот же файл.

Вот что я ожидал от каждого:

$array = array(1);
$data = '<?php $array =' . var_export($array, TRUE) . '; ?>';
file_put_contents($filename, $data);

// contents of file:
<?php $array =array ( 0 => 1, ); ?>

//
// VS:
//

$array = array(1);
$data = '<?php $array =' . var_export($array, TRUE) . '; ?>';
file_put_contents($filename, $data);

// contents of file:
<?php $array =; ?>

// Here the value of $data is NULL, which becomes ''
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector