这是一个使用print_r转储的相当大的对象。
https://docs.google.com/document/d/175RLhWlMQcyhGR6ffGSsoJGS3RyloEqo4EEHCL2H2vg/edit?usp=sharing
我正在尝试更改uploaded_files的值。
接近那个对象的末尾,你会看到类似
的东西[uploaded_files] =>排列 ( [attachment] => /home2/magician/public_html/development/testing/wp-content/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 :(得分: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);
我希望这会有所帮助。注意:您的Google文档受到限制,公众无法看到它。而且您的问题太模糊了。如果我能提供更多帮助,请告诉我。
如果要立即更改对象数组值,只需将其设置为等于上面的循环结果:
$cf7ev_object->uploaded_files = $new_array;