2014-03-30 15 views
0

这是一个使用print_r转储的相当大的对象。如何循环并更改此PHP对象中的值?

https://docs.google.com/document/d/175RLhWlMQcyhGR6ffGSsoJGS3RyloEqo4EEHCL2H2vg/edit?usp=sharing

我试图改变uploaded_files的值。

为实现这一目的的末尾,你将看到类似

[uploaded_files] =>数组 ( [附件] =>/HOME2 /魔术师/的public_html /开发/测试/可湿性粉剂内容/uploads/wpcf7_uploads/Central-Coast-Montessori-logo.jpg [attachment2] => /home2/magician/public_html/development/testing/wp-content/uploads/wpcf7_uploads/Andrew.jpg)

我代码 //将附件移动到wpcf7ev临时文件夹

foreach ($cf7ev_object['uploaded_files'] as $key => $uploaded_file_path) { 
    $new_filepath = WPCF7EV_UPLOADS_DIR . '/' . basename($uploaded_file_path); 
    wpcf7ev_debug("New file path is {$new_filepath}"); 
    rename($uploaded_file_path, $new_filepath); 
    wpcf7ev_debug("'{$key}'is the KEY for {$uploaded_file_path}"); 
    wpcf7ev_debug($cf7ev_object['uploaded_files']);   
    $cf7ev_object['uploaded_files'][$key] = $new_filepath; // this is not updating 
} 

通过它循环我一直在使用

foreach ($cf7ev_object->uploaded_files as $key => $uploaded_file_path) { 

,这工作过。

但它不应该是

foreach ($cf7ev_object['uploaded_files'] as $key => $uploaded_file_path) { 

?由于' - >'用于访问方法?

而具体我想更新这些uploaded_files的值,因此要做到这一点,我需要做

 $cf7ev_object['uploaded_files'][$key] = $new_filepath; // this is not updating 

?但这似乎并没有奏效。

我想我需要清楚如何访问对象中的值。

谢谢。

+0

可以遍历在foreach – Smash

+0

你试图使对象的数组中的最后一个例子用我的解决方案玩,这应该适合你。 –

回答

1

首先,关于单箭头“ - >”这是你如何引用一个对象的值。但我不会深究这一点。既然你说它有效,$ cf7ev_object显然是一个对象。

你说你想“访问对象中的值”。

var_dump($cf7ev_object); 

这将吐出该对象中的内容。我收集你是一个新手,所以我会尽力帮助你最好,我可以用你提供的有限的数据(你可能想扩大你的问题。)

循环不是一笔交易。 。可以嵌套循环和那些内嵌套循环然而,这是一种资源的猪,如果你不小心,这是一个锻炼,可以帮助你

$new_array = array(); 
foreach($cf7ev_object->uploaded_files as $key => $value) { 
    $new_value = $value;//do something to the $value here 
    $new_array[$key] = $new_value; 
} 
//take a look at your work now: 
print_r($new_array); 

我希望这有助于注:。您的谷歌doc是受限制的,公众看不到它..而你的问题太模糊了,让我知道我是否可以提供更多帮助。

如果你想瞬间改变对象的数组值你只是将其设置为上述循环的结果:

$cf7ev_object->uploaded_files = $new_array; 
+0

显然任何人都可以访问该链接的文档。我已将其更新为可公开访问。 – magician11

+0

因此[uploaded_files]是对象的值之一是?所以要访问它,我会使用$ cf7ev_object-> uploaded_files超过$ cf7ev_object ['uploaded_files']? – magician11

+0

是的,这是正确的,做我正在做的解决方案。这是你在找什么。你可以访问一个对象,如果它是一个数组。 –