Къде греша?

ventsi34

Registered
Здравейте, имам два php файла със съдържание:

page1.php
Код:
<?php
$date['name']='google';
?>

page2.php
Код:
function name(){
include 'page1.php';
}
name();
echo $date['name'];

и резултатът е:

Notice: Undefined variable: date in E:\server\xampp\htdocs\WebSite\functions.php on line 34

защо се получава така ясно е че нещо видимостта е скапана ама как да го оправя?
 
Мисля, че във фукция include не може да се слага.. Тоест не го приема. Ако се лъжа поправете ме!
 
page1.php
Код:
<?php
$date['name']='google';
?>

page2.php
Код:
function name(){
include 'page1.php';
echo $date['name'];
}
name();
така работи!
 
ventsi34 каза:
page1.php
Код:
<?php
$date['name']='google';
?>

page2.php
Код:
function name(){
include 'page1.php';
echo $date['name'];
}
name();
така работи!
Значи този include работи само в самата фукция. :)
Пробвай да добавиш тази стойност към друга променлива пример:
Код:
function name(){
include 'page1.php';
$str = $date['name'];
}
name();
echo $str;
И кажи какъв е резултата
 
това ще стана ама ще е много непрактично, защото ми трябва за много променливи няма да са само една две.
 
ventsi34 каза:
това ще стана ама ще е много непрактично, защото ми трябва за много променливи няма да са само една две.
Сложи ги в array и ги изкарвай от него.
PHP:
function name(){ 
include 'page1.php'; 
$str = array(
'name' => $date['name'],
'age' => $date['age']
); 
} 
name(); 
echo $str['name'] .' <br /> ' . $str['age'];
 
Без scope няма да тръгне нито едното. (http://php.net/manual/en/language.variables.scope.php)
page1.php

Код:
<?php

$date = array();
$date['name']='google';

?>

page2.php

Код:
include 'page1.php';
function getname($vars){
    global $date;
    
    return $date[$vars];
}
echo getname('name'); // google
 
Грешката ти е, че $date не ти е глобална променлива
т.е. след като инклудваш някакъв файл вътре във функция неговите променливи стават локални за тая функция!

Пробвай така:

page1.php


Код:
<?php
global $date;
$date['name']='google';
?>
	
		


page2.php	
function name(){
global $date;
include 'page1.php';
}
name();
echo $date['name'];
 
d3xter каза:
Грешката ти е, че $date не ти е глобална променлива
т.е. след като инклудваш някакъв файл вътре във функция неговите променливи стават локални за тая функция!

Пробвай така:

page1.php


Код:
<?php
global $date;
$date['name']='google';
?>
	
		


page2.php	
function name(){
global $date;
include 'page1.php';
}
name();
echo $date['name'];

Глупости.За какво ти е първо global, преди да си дефинирал $date, трябва да се сложи date като масив.В първия код въобще не ти трябва, тъй като си е вече глобална.2ро защо първо слагаш global $date, като чак после го добавяш в кода ?
 
Глупости.За какво ти е първо global, преди да си дефинирал $date, трябва да се сложи date като масив.В първия код въобще не ти трябва, тъй като си е вече глобална.2ро защо първо слагаш global $date, като чак после го добавяш в кода ?

Преди да критикуваш вземи и тествай!
Плюс това се аргументирай.

Та да минем на проблема.
На човека му трябва една глобална променлива, защото както се вижда от кода иска да променя тая променлива в друг файл, който на всичкото отгоре се извиква и във функция!
Съгласен съм, че когато инклудваш файл в друг файл променливите на единя файл са локални и за другия!

Най-дборе вместо да спорим тук, който се притеснява за тия работи да хвърли едно око тук
 
d3xter каза:
Глупости.За какво ти е първо global, преди да си дефинирал $date, трябва да се сложи date като масив.В първия код въобще не ти трябва, тъй като си е вече глобална.2ро защо първо слагаш global $date, като чак после го добавяш в кода ?

Преди да критикуваш вземи и тествай!
Плюс това се аргументирай.

Та да минем на проблема.
На човека му трябва една глобална променлива, защото както се вижда от кода иска да променя тая променлива в друг файл, който на всичкото отгоре се извиква и във функция!
Съгласен съм, че когато инклудваш файл в друг файл променливите на единя файл са локални и за другия!

Най-дборе вместо да спорим тук, който се притеснява за тия работи да хвърли едно око тук

Когато добавиш един файл в друг, във 2ия файл са глобални и елементите от 1ия.

Погледни си колко е безсмислен кода който даваш.

function name(){
global $date;
include 'page1.php';
}
name()

Твоя код е същия като:
page1.php ==>

<?php
$date['name']='google';
?>

page2.php ==>

<?php

include('page1.php');

echo $date['name'];

?>

Горния код е много, много по-добър.По-къс, много по-малко памет заема и нема да метне един куп грешки.
Замисли се и усети кви глупости пишеш..
 

Back
Горе