Я просто написал эту функцию, чтобы выводить массив, как текст:
Должен выводить красиво отформатированный массив.
ВАЖНО:
Остерегайтесь пользовательского ввода.
Этот скрипт был создан для внутреннего использования.
Если вы намерены использовать это для общего пользования, вам нужно будет добавить дополнительную проверку данных, чтобы предотвратить инъекцию скрипта.
Это не дурацкое доказательство и должно использоваться только с достоверными данными.
Следующий вывод что-то функция будет, как:
$var = array(
'primarykey' => array(
'test' => array(
'var' => array(
1 => 99,
2 => 500,
),
),
'abc' => 'd',
),
);
здесь функция (примечание:. Функция в настоящее время отформатирован для реализации ООП)
public function outArray($array, $lvl=0){
$sub = $lvl+1;
$return = "";
if($lvl==null){
$return = "\t\$var = array(\n";
}
foreach($array as $key => $mixed){
$key = trim($key);
if(!is_array($mixed)){
$mixed = trim($mixed);
}
if(empty($key) && empty($mixed)){continue;}
if(!is_numeric($key) && !empty($key)){
if($key == "[]"){
$key = null;
} else {
$key = "'".addslashes($key)."'";
}
}
if($mixed === null){
$mixed = 'null';
} elseif($mixed === false){
$mixed = 'false';
} elseif($mixed === true){
$mixed = 'true';
} elseif($mixed === ""){
$mixed = "''";
}
//CONVERT STRINGS 'true', 'false' and 'null' TO true, false and null
//uncomment if needed
//elseif(!is_numeric($mixed) && !is_array($mixed) && !empty($mixed)){
// if($mixed != 'false' && $mixed != 'true' && $mixed != 'null'){
// $mixed = "'".addslashes($mixed)."'";
// }
//}
if(is_array($mixed)){
if($key !== null){
$return .= "\t".str_repeat("\t", $sub)."$key => array(\n";
$return .= $this->outArray($mixed, $sub);
$return .= "\t".str_repeat("\t", $sub)."),\n";
} else {
$return .= "\t".str_repeat("\t", $sub)."array(\n";
$return .= $this->outArray($mixed, $sub);
$return .= "\t".str_repeat("\t", $sub)."),\n";
}
} else {
if($key !== null){
$return .= "\t".str_repeat("\t", $sub)."$key => $mixed,\n";
} else {
$return .= "\t".str_repeat("\t", $sub).$mixed.",\n";
}
}
}
if($lvl==null){
$return .= "\t);\n";
}
return $return;
}
В качестве альтернативы вы можете использовать этот сценарий, я также написал (а):
Этот файл хорош для копирования и вставки частей массива.
(Было бы почти невозможно сделать это с сериализованном выходом)
Не чистейшая функция, но она получает работу.
Этот выход будет следующим:
$array['key']['key2'] = 'value';
$array['key']['key3'] = 'value2';
$array['x'] = 7;
$array['y']['z'] = 'abc';
принимают также уход ввода данных пользователем. Вот код.
public static function prArray($array, $path=false, $top=true) {
$data = "";
$delimiter = "~~|~~";
$p = null;
if(is_array($array)){
foreach($array as $key => $a){
if(!is_array($a) || empty($a)){
if(is_array($a)){
$data .= $path."['{$key}'] = array();".$delimiter;
} else {
$data .= $path."['{$key}'] = \"".htmlentities(addslashes($a))."\";".$delimiter;
}
} else {
$data .= self::prArray($a, $path."['{$key}']", false);
}
}
}
if($top){
$return = "";
foreach(explode($delimiter, $data) as $value){
if(!empty($value)){
$return .= '$array'.$value."<br>";
}
};
echo $return;
}
return $data;
}
Как вы можете ТОЛЬКО сохранять содержимое массива, а не весь массив "[0] => blah" ?? – user1899415
@ user1899415 'implode' массив с' PHP_EOL' и записать результирующую строку в файл. – Gordon
'var_export' лучше, если вы хотите сохранить файл в синтаксисе php. 'print_r' возвращает' [m] => monkey', но 'var_export' возвращает' 'm '=>' monkey'' –