У меня есть простой механизм шаблона, и у меня есть проблема с предоставлением ему данных из массива-адреса. Может ли кто-нибудь дать мне совет? В методе getStatisticData
я даю массив-символ как первую переменную $data
. Мой входной массив в виде:Array to string conversion php, array array
[0] => Array
(
[OrderNumber] => 1
[Name] => Zahid
[Total revenue] => 8363.38
)
Я пытаюсь получить данные из него с помощью foreach
, но он не работает. Я получаю уведомление
Notice: Array to string conversion in C:\Server\htdocs\Task\lib\TemplateGen.php on line 34
protected function getStatisticData($data, $template){
$text = "";
if($data === false) {
return "We don't have any data in database";
}
foreach($data as $key => $value){
$data[$key] = $value;
$text .= $this->template_gen->getReplaceTemplate($data ,$template);
}
return $text;
}
getReplaceContent
и связанные с ними методы из TemplateGen.php
:
private function getReplaceContent($dataString, $content)
{
$search = array();
$replace = array();
$i = 0;
foreach ($dataString as $key => $value) {
$search[$i] = "%$key%";
$replace[$i] = $value;
$i++;
}
return str_replace($search, $replace, $content); ## LINE 34
}
function getReplaceTemplate($dataString, $template)
{
return $this->getReplaceContent($dataString, $this->getTemplate($template));
}
function getTemplate($name)
{
return $content = file_get_contents($this->config->tpl_path . $name . ".tpl");
}
UPDATE:
Я получил 2 новые ошибки
Warning: implode(): Invalid arguments passed in C:\Server\htdocs\Task\lib\TemplateGen.php on line 28 Fatal error: Cannot redeclare add_percent() (previously declared in C:\Server\htdocs\Task\lib\TemplateGen.php:25) in C:\Server\htdocs\Task\lib\TemplateGen.php on line 25
Линия 25:
function add_percent($i) {
Линия 28:
return implode("", str_replace(array_map("add_percent", array_keys($dataString)), array_values($dataString),$content));
UPDATE2:
В теории, все предусмотрено в новом методе должны работать очень хорошо. Но есть те же самые проблемы, которые были в начале
Notice: Array to string conversion in C:\Server\htdocs\Task\lib\TemplateGen.php on line 44`
line 44 :
return str_replace(
array_map($addPercent, array_keys($data)), array_values($data), $template
);
Но если I'am используя мой getStatisticData
вместо вашей, он работает, но есть много других ошибок
Мой метод:
protected function getStatisticData($data, $template){
$text = array();
if($data === false) {
return "We don't have any data in database";
}
$i=0;
foreach($data as $dataString){
if (!empty($data[$i+1])){
foreach($dataString as $key => $value){
$dataString[$i][$key] = $dataString[$i][$value];
}}
$text .= $this->template_gen->getReplaceTemplate($dataString ,$template);
}
return $text;
}
Почему вы это делаете: 'foreach ($ data as $ key => $ value) {$ data [$ key] = $ value;'}?! –
, как указано в приведенном выше комментарии, '$ data [$ key] = $ value;' такое же, как '$ value = $ value;' или '$ data [$ key] = $ data [$ key];' –
btw, где строка 34 «TemplateGen»? Вы также разместили 'getReplaceContent', а не' getReplaceTemplate'. –