Php 如何回显函数返回的关联数组的值
我正在尝试使用Stackoverflow上其他地方建议的关联数组来完成一些事情,但我从未使用过数组,所以我很挣扎。我已经查过了,但却发现自己比以前更糊涂了 这里的交易:我想显示一个随机图像作为背景的WorpAddress网站,并显示摄影师的名字谁采取了图像以及。因此,我创建了一个函数,其中包括一个关联数组,将图像与摄影师关联,以及一个检索照片和摄影师姓名的小脚本。这是我的职责:Php 如何回显函数返回的关联数组的值,php,arrays,random,associative,Php,Arrays,Random,Associative,我正在尝试使用Stackoverflow上其他地方建议的关联数组来完成一些事情,但我从未使用过数组,所以我很挣扎。我已经查过了,但却发现自己比以前更糊涂了 这里的交易:我想显示一个随机图像作为背景的WorpAddress网站,并显示摄影师的名字谁采取了图像以及。因此,我创建了一个函数,其中包括一个关联数组,将图像与摄影师关联,以及一个检索照片和摄影师姓名的小脚本。这是我的职责: function bg_image_info() { $creditsList = array( "1" =
function bg_image_info() {
$creditsList = array(
"1" => "Photographer 1",
"2" => "Photographer 2",
"3" => "Photographer 3",
...
...
"74" => "Photographer 74"
);
$root = get_stylesheet_directory_uri();
$dir = $root . "/images/bgs/";
$random = mt_rand(1,74);
$path = $root . "/images/bgs/bg_" . $random . ".jpg";
$credits = $creditsList["" . $random . ""];
return array($path, $credits);
}
它工作得很好,但有一个缺点。我需要在两个不同的位置使用$path和$credits这两个值($path作为“src”属性,$credits在“p”标记中),因此我在做了一些研究之后,尝试编写另外两个函数:
function bg_image_path() {
list($bgPath, $bgCredits) = bg_image_info($path, $credits);
echo $bgPath;
}
function bg_image_credits() {
list($bgPath, $bgCredits) = bg_image_info($path, $credits);
if($bgCredits) {
echo "Photo " . $bgCredits . "";
}
}
然后在我需要重视的地方给每个人打电话。但这两个函数似乎使用了不同的$random值,因为照片和信用不匹配(如果为了测试目的我用固定值替换mt_rand(),它们会匹配)
那么,如何回显第一个函数返回的两个值,以便使用相同的$random值呢
我真的非常感谢任何帮助,谢谢 关联数组对值使用命名键,我们可以用类似于索引数组的方式创建它们。foreach用于在关联数组中循环
<?php
$colors = array("0"=>"Red","1"=>"Green","2"=>"Blue");
echo "0th element of array is " . $colors["0"];
echo "<br>";
//looping
foreach ($colors as $key=>$value){
echo "Key=".$key." value=".$value;
echo "<br>";
}
?>
关联数组对值使用命名键,我们可以用类似于索引数组的方式创建它们。foreach用于在关联数组中循环
<?php
$colors = array("0"=>"Red","1"=>"Green","2"=>"Blue");
echo "0th element of array is " . $colors["0"];
echo "<br>";
//looping
foreach ($colors as $key=>$value){
echo "Key=".$key." value=".$value;
echo "<br>";
}
?>
当然,这是因为您每次调用函数两次 您需要路径或积分的时间,从而生成两个不同的 随机值 我认为没有必要使用最后两个函数(
bg\u image\u path()
和
bg\u image\u credits()
)。一个简单的修复方法是在
在你的页面中的一些点(在第一次使用之前),只保留这些变量
在需要时使用
list($bgPath, $bgCredits) = bg_image_info($path, $credits);
# [...]
<img src="<?= $bgPath ?>" />
# [...]
<p>Credits: <?= $bgCredits ?></p>
list($bgPath,$bgpcredits)=bg\u image\u info($path,$credits);
# [...]
" />
# [...]
学分:
回答你的评论,我完全理解你想保留它 保持整洁,不要重复你自己,但实际上,在这种情况下,你只是 使用函数。重复调用函数的行没有错 在两个或两个以上的地方。这就是它的使用方式:) 不管怎么说,如果你想通过不同的方式回应你的价值观 函数,必须在它们之间共享随机数,以便 同样的事情。我想到的第一个方法是你生成 自己编号,他们使用两个函数通过 把这个号码传给他们。但是既然你想让它保持功能 电话,我想你会更喜欢这样做类似于你目前的设置 3个函数。可以做的是完全重写以生成 主函数中的值,并将数据保存在其他函数中:
function
bg_image_info()
{
# note the global to avoid it being local only
global $bg_random = mt_rand(1,74);
}
function
bg_image_path()
{
echo get_stylesheet_directory_uri() .
"/images/bgs/bg_$bg_random.jpg";
}
function
bg_image_credits()
{
$creditsList = [
'none',
"Photographer 1",
"Photographer 2",
"Photographer 3",
# ...
"Photographer 74"
];
echo $creditsList[$bg_random];
}
<?php bg_image_info(); ?>
<img src="<? bg_image_path() ?>" />
<p>Credits: <? bg_image_credits() ?></p>
函数
bg_图像_信息()
{
#请注意全局设置,以避免仅为局部设置
全球$bg_随机=百万兰特(1,74);
}
功能
bg_图像_路径()
{
echo获取\样式表\目录\ uri()。
“/images/bgs/bg_$bg_random.jpg”;
}
功能
bg_图像_学分()
{
$creditsList=[
“没有”,
“摄影师1”,
“摄影师2”,
“摄影师3”,
# ...
“摄影师74”
];
echo$creditsList[$bg_random];
}
" />
学分:
或者使用面向对象的方法
class RandomImage
{
public $path;
public $credits;
public function
__construct()
{
$r = mt_rand(1,74);
$creditsList = [
'none',
"Photographer 1",
"Photographer 2",
"Photographer 3",
# ...
"Photographer 74"
];
$path = get_stylesheet_directory_uri() .
"/images/bgs/bg_$r.jpg";
$credits = $creditsList[$r];
}
}
<?php $img = new RandomImage; ?>
<img src="<?= $img->path ?>" />
<p>Credits: <?= $img->credits ?></p>
类随机图像
{
公共道路;;
公共美元信贷;
公共职能
__构造()
{
$r=百万兰特(1,74);
$creditsList=[
“没有”,
“摄影师1”,
“摄影师2”,
“摄影师3”,
# ...
“摄影师74”
];
$path=get\u样式表\u目录\u uri()。
“/images/bgs/bg_$r.jpg”;
$credits=$creditsList[$r];
}
}
路径?>“/>
学分:
当然会发生这种情况,因为您每次调用函数两次
您需要路径或积分的时间,从而生成两个不同的
随机值
我认为没有必要使用最后两个函数(bg\u image\u path()
和
bg\u image\u credits()
)。一个简单的修复方法是在
在你的页面中的一些点(在第一次使用之前),只保留这些变量
在需要时使用
list($bgPath, $bgCredits) = bg_image_info($path, $credits);
# [...]
<img src="<?= $bgPath ?>" />
# [...]
<p>Credits: <?= $bgCredits ?></p>
list($bgPath,$bgpcredits)=bg\u image\u info($path,$credits);
# [...]
" />
# [...]
学分:
回答你的评论,我完全理解你想保留它
保持整洁,不要重复你自己,但实际上,在这种情况下,你只是
使用函数。重复调用函数的行没有错
在两个或多个地方。这就是它的使用方式:)
不管怎么说,如果你想通过不同的方式回应你的价值观
函数,必须在它们之间共享随机数,以便
同样的事情。我想到的第一个方法是你生成
自己编号,他们使用两个函数通过
把这个号码传给他们。但既然你想保持它的功能
电话,我想你会更喜欢这样做类似于你目前的设置
3个功能。可以做的是完全重写以生成
主函数中的值,并将数据保存在其他函数中:
function
bg_image_info()
{
# note the global to avoid it being local only
global $bg_random = mt_rand(1,74);
}
function
bg_image_path()
{
echo get_stylesheet_directory_uri() .
"/images/bgs/bg_$bg_random.jpg";
}
function
bg_image_credits()
{
$creditsList = [
'none',
"Photographer 1",
"Photographer 2",
"Photographer 3",
# ...
"Photographer 74"
];
echo $creditsList[$bg_random];
}
<?php bg_image_info(); ?>
<img src="<? bg_image_path() ?>" />
<p>Credits: <? bg_image_credits() ?></p>
函数
bg_图像_信息()
{
#请注意全局设置,以避免仅为局部设置
全球$bg_随机=百万兰特(1,74);
}
功能
bg_图像_路径()
{
echo获取\样式表\目录\ uri()。
“/images/bgs/bg_$bg_random.jpg”;
}
功能
bg_图像_学分()
{
$creditsList=[
“没有”,
“摄影师1”,
“摄影师2”,
“摄影师3”,
# ...