PHP语法:同一文件中的相同代码段返回不同的值

PHP语法:同一文件中的相同代码段返回不同的值,php,wordpress,syntax,echo,Php,Wordpress,Syntax,Echo,我在PHP格式化方面遇到了困难:P 在一个函数中,我有这些字符串,并且正确地输出了路径(wordpress绝对上传路径+/json/dailymile/blablabla.json $url1 = "http://api.dailymile.com/people/XXXXX/entries.json"; $cache1 = $upload_dir['basedir'].'/json/dailymile/'.sha1($url1).'.json'; 然后我有一个类似的例子(如果不是相同的话),但

我在PHP格式化方面遇到了困难:P 在一个函数中,我有这些字符串,并且正确地输出了路径(wordpress绝对上传路径+
/json/dailymile/blablabla.json

$url1 = "http://api.dailymile.com/people/XXXXX/entries.json";
$cache1 = $upload_dir['basedir'].'/json/dailymile/'.sha1($url1).'.json';
然后我有一个类似的例子(如果不是相同的话),但只有天知道为什么,$cache2只返回
/json/instagram/blablabla.json
,之前没有wordpress上传路径

$url2 = 'https://api.instagram.com/v1/users/'.$user_id.'/media/recent/?access_token='.$token.'&count='.$count;
$cache2 = $upload_dir['basedir'].'/json/instagram/'.sha1($url2).'.json';
这两个代码段位于同一个文件中,我在该文件的顶部有


为什么第二个代码段没有在
/json/instagram/blablabla.json
之前返回WP upload dir?

$upload_dir
在函数中使用代码时超出了范围。使用
全局
关键字可以将变量从全局范围导入当前范围。如下所示:

<?php
function get_instagram(...) {
    global $upload_dir;
    ...
}

我们可能需要看到更多的代码。:)尝试插入
var\u dump($upload\u dir)就在第二个代码段开始之前。@ninetwozero添加了整个函数。康弗里克:好吧,试试看now@ComFreek这就是输出:当这起作用时,应该将
$upload\u dir
作为参数传递。这取决于用例和您想要实现的代码质量。在这种情况下,它看起来像一个“快速黑客”,我们已经有了一个具有大量参数的函数。在添加另一个参数之前,您可能首先希望通过将其包装在一个类中来删除所有参数。但是为什么我在同一个文件中有其他函数,并且如果它不在函数中,它也可以为它们工作呢?也许在其他函数中,
$upload\u dir
在使用之前就已经定义好了?