假设我有 $categories = $this->Pages->Categories->find('active')
->select(['title', 'slug', 'page_count'])
->order(['title' => 'ASC'])
->cache('widget_categories')
->toArray();
:
slug
现在,我希望 foreach ($categories as $k => $category) {
$categories[$category->slug] = $category;
unset($categories[$k]);
}
字段是数组键。
现在我使用(可怕的)循环:
$categories
########## DEBUG ##########
[
'first-page-category' => object(MeCms\Model\Entity\PagesCategory) {
'title' => 'First page category',
'slug' => 'first-page-category',
'page_count' => (int) 1,
'[new]' => false,
'[accessible]' => [
'*' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'MeCms.Categories'
},
'sub-sub-page-category' => object(MeCms\Model\Entity\PagesCategory) {
'title' => 'Sub sub page category',
'slug' => 'sub-sub-page-category',
'page_count' => (int) 2,
'[new]' => false,
'[accessible]' => [
'*' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'MeCms.Categories'
}
]
###########################
的调试示例:
Cache::read()
这会产生两个问题:
一种可能的解决方案是使用Cache::write()
和$categories = Cache::read('widget_categories');
if (empty($categories)) {
//Find...
//Loop for changing keys...
Cache::write('widget_categories', $categories);
}
。例如:
formatResults()
在我看来,最好的解决方案是将combine()
与 $categories = $this->Pages->Categories->find('active')
->select(['title', 'slug', 'page_count'])
->order(['title' => 'ASC'])
->formatResults(function ($results) {
return $results->combine('slug', function ($row) {
return $row;
});
})
->cache('widget_categories')
->toArray();
方法结合使用。例如:
import os
import sys
import selenium
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
browser = webdriver.Firefox()
type(browser)
Get_webpage=browser.get('https://accounts.google.com/ServiceLogin?sacu=1&scc=1&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F&hl=en&service=mail#identifier')
user_name = browser.find_element_by_id('Email')
user_name.send_keys("username")#Enter your username
time.sleep(2)
next = browser.find_element_by_id('next')
next.submit()
time.sleep(5)
password = browser.find_element_by_id('Passwd')
password.send_keys("password")#enter your password
password.submit()
time.sleep(5)
compose = browser.find_element_by_xpath("//div[@role='button']")
compose.click()
time.sleep(5)
Attach_file = browser.find_element_by_xpath("//div[@role='button']")
这是对的吗?是否有更简单的方法和/或使代码更具可读性?
感谢。