PHP:在多数组中存在值时构建一个编码的URL
我的目标是: 如果这些数组中的值与文件的扩展名匹配,那么我可以构建一个漂亮的URL编码字符串,我可以使用PHP:在多数组中存在值时构建一个编码的URL,php,arrays,array-walk,Php,Arrays,Array Walk,我的目标是: 如果这些数组中的值与文件的扩展名匹配,那么我可以构建一个漂亮的URL编码字符串,我可以使用http\u build\u query()函数将其附加到URL。如果未找到匹配项,则不返回任何内容 我已经尝试了所有可能的方法,但没有成功,如下代码所示。你能检查一下哪一部分错了吗 $name = 'myfile.mp4'; $list = array( 'video' => array('3gp', 'mkv', 'mp4'), 'photo' => ar
http\u build\u query()
函数将其附加到URL。如果未找到匹配项,则不返回任何内容
我已经尝试了所有可能的方法,但没有成功,如下代码所示。你能检查一下哪一部分错了吗
$name = 'myfile.mp4';
$list = array(
'video' => array('3gp', 'mkv', 'mp4'),
'photo' => array('jpg', 'png', 'tiff')
);
// File Ext Check
$ext = (strpos($name, '.') !== false) ? strtolower(substr(strrchr($name, '.'), 1)) : '';
$type = null;
$find = $ext;
array_walk($list, function ($k, $v) use ($find, &$type)
{
if (in_array($find, $k))
{
$type = $v;
$data = array();
switch ($type)
{
case 'video':
$data['title'] = 'video';
$data['description'] = 'my video';
break;
case 'photo':
$data['title'] = 'photo';
$data['description'] = 'my photo';
break;
}
}
else {
echo "not both!.";
exit;
{
});
if ($type == 'video') {
$link = 'https://www.video.com' . http_build_query($data);
}
else
if ($type == 'photo') {
$link = 'https://www.photo.com' . http_build_query($data);
}
echo $link;
谢谢您……您的
$data
设置在数组\u walk()
范围内,但未定义数组\u walk()
范围外。因此在http\u build\u查询($data)
中,这里没有定义$data
您可以在
use()
中引用$data
,然后在array\u walk()
之后,可以使用其值。在您的代码中,您使用In_array()
检查列表中的文件类型,为了性能,我建议您查看此信息。您的$data
设置在array_walk()
范围内,但未定义array_walk()
范围之外。因此在http\u build\u查询($data)
中,这里没有定义$data
您可以在
use()
中引用$data
,然后在array\u walk()
之后,可以使用其值。在您的代码中,您可以使用In_array()
检查列表中的文件类型,为了提高性能,我建议您查看此信息。您好,推荐链接中的所有方法都有效。非常感谢。但是,我仍然不知道如何使array\u walk()
在上述条件下工作。我想了解和探索它。你能给我一个确切的答案吗?.从array_walk()中初始化$data,然后调用array_walk($list,function($k,$v)use($find,&$type,&$data));大家好,推荐链接上的所有方法都是works。非常感谢。但是,我仍然不知道如何使array\u walk()
在上述条件下工作。我想了解和探索它。你能给我一个确切的答案吗?.从array_walk()中初始化$data,然后调用array_walk($list,function($k,$v)use($find,&$type,&$data));