Php 添加到键等于变量的数组
我总是很难理解这些foreach数组的东西,所以在让我到达那里的过程中,这是一个非常有价值的资源,所以我希望你们能帮我解决这个问题Php 添加到键等于变量的数组,php,multidimensional-array,foreach,Php,Multidimensional Array,Foreach,我总是很难理解这些foreach数组的东西,所以在让我到达那里的过程中,这是一个非常有价值的资源,所以我希望你们能帮我解决这个问题 public function progress_bar() { $items = array( array( 'step-name' => 'Setup', 'url' => '/projects/new/setup/', ), array(
public function progress_bar()
{
$items = array(
array(
'step-name' => 'Setup',
'url' => '/projects/new/setup/',
),
array(
'step-name' => 'Artwork',
'url' => '/projects/new/artwork/',
),
array(
'step-name' => 'Review',
'url' => '/projects/new/review/',
),
array(
'step-name' => 'Shipping',
'url' => '/projects/new/shipping-info/',
),
array(
'step-name' => 'Billing',
'url' => '/projects/new/billing/',
),
array(
'step-name' => 'Receipt',
'url' => '/projects/new/receipt/',
),
);
// Status can be active, editing, or complete.
foreach ($this->progress as $step => $status)
{
foreach ($items as $item)
{
$item['step-name'] == ucfirst($step) ? $item['status'] = $status : '';
}
}
return $items;
}
$this->progress
包含一系列状态(“设置”=>“活动”、“艺术品”=>“编辑”)
我想在$items
数组中添加$this->progress
$items = array(
array(
'step-name' => 'Setup',
'url' => '/projects/new/setup',
'status' => 'active',
),
etc...
);
您是否已锁定使用数组来存储$items?如果是这样的话,您将陷入嵌套循环(“对于$this->progress中的每个元素,检查$items中的每个元素。如果匹配,则更新$items”或类似内容)。如果您有一些灵活性,我将使用$items的哈希(php语言中的关联数组),其中索引是步骤名称。所以$items['Setup']将包含'url'=>。。。和“状态”=>。。。等等,这有意义吗?然后,您的算法将分解为“对于$this->progress中的每个元素,按名称获取$items中的元素($items[$step_name]),并更新其信息。”如果我正确理解您的问题,问题是您正试图将数组元素添加到$items中,但实际操作是将元素添加到临时变量中($item),它不引用原始$items变量 我建议这样做:
foreach ($this->progress as $step => $status)
{
// Having the $key here allows us to reference the
// original $items variable.
foreach ($items as $key => $item)
{
if ($item['step-name'] == ucfirst($step) )
{
$items[$key]['status'] = $status;
}
}
}
return $items;
我会改变$items数组的键控方式,并这样做。阻止您使用嵌套循环
public function progress_bar()
{
$items = array(
'Setup' => array(
'url' => '/projects/new/setup/',
),
'Artwork' => array(
'url' => '/projects/new/artwork/',
),
'Review' => array(
'url' => '/projects/new/review/',
),
'Shipping' => array(
'url' => '/projects/new/shipping-info/',
),
'Billing' => array(
'url' => '/projects/new/billing/',
),
'Receipt' => array(
'url' => '/projects/new/receipt/',
)
);
// Status can be active, editing, or complete.
foreach ($this->progress as $step => $status)
{
$item[ucfirst($step)]['status'] = $status;
}
return $items;
}
是的,你的理解是正确的,是的,我承认这是暂时的,但不知道如何使它永久化,是的,你统治并拯救了这一天!!在所有方面都很出色!