[英]How can I code this script better? Search & extract values from an array in PHP
I managed to write the following function which took me all afternoon.我设法写了以下 function 花了我整个下午。 I used various sources and managed to cobble something together.
我使用了各种资源并设法拼凑出一些东西。 I'm a newbie.
我是新手。 It works, but I'm sure it can be coded better and more efficiently.
它有效,但我确信它可以更好、更有效地编码。 If anybody has any ideas..
如果有人有任何想法..
Here is my array:这是我的数组:
Array
(
[0] => Array
(
[database] => oneclick_themes
[disk_usage] => 16384
[users] => Array
(
[0] => oneclick_themes
)
)
[1] => Array
(
[database] => oneclick_wp1
[disk_usage] => 123230
[users] => Array
(
[0] => oneclick_wp1
)
)
[2] => Array
(
[users] => Array
(
[0] => oneclick_wp10
)
[database] => oneclick_wp10
[disk_usage] => 123230
)
[3] => Array
(
[users] => Array
(
[0] => oneclick_wp11
)
[disk_usage] => 123222
[database] => oneclick_wp11
)
[4] => Array
(
[users] => Array
(
[0] => oneclick_wp12
)
[disk_usage] => 123230
[database] => oneclick_wp12
)
[5] => Array
(
[users] => Array
(
[0] => oneclick_wp13
)
[disk_usage] => 123222
[database] => oneclick_wp13
)
[6] => Array
(
[users] => Array
(
[0] => oneclick_wp14
)
[database] => oneclick_wp14
[disk_usage] => 123222
)
[7] => Array
(
[users] => Array
(
[0] => oneclick_wp2
)
[disk_usage] => 123226
[database] => oneclick_wp2
)
[8] => Array
(
[users] => Array
(
[0] => oneclick_wp3
)
[disk_usage] => 0
[database] => oneclick_wp3
)
[9] => Array
(
[database] => oneclick_wp4
[disk_usage] => 123230
[users] => Array
(
[0] => oneclick_wp4
)
)
[10] => Array
(
[users] => Array
(
[0] => oneclick_wp5
)
[database] => oneclick_wp5
[disk_usage] => 0
)
[11] => Array
(
[users] => Array
(
[0] => oneclick_wp6
)
[database] => oneclick_wp6
[disk_usage] => 0
)
[12] => Array
(
[disk_usage] => 123222
[database] => oneclick_wp7
[users] => Array
(
[0] => oneclick_wp7
)
)
[13] => Array
(
[disk_usage] => 123222
[database] => oneclick_wp8
[users] => Array
(
[0] => oneclick_wp8
)
)
[14] => Array
(
[database] => oneclick_wp9
[disk_usage] => 0
[users] => Array
(
[0] => oneclick_wp9
)
)
)
This is my PHP code:这是我的 PHP 代码:
$array = array();
function search_array($array, $val) {
$ArrIterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
foreach($ArrIterator as $id => $sub) {
$childArray = $ArrIterator->getSubIterator();
if(strstr(strtolower($sub), strtolower($val))) {
$childArray = iterator_to_array($childArray);
$result[] = $childArray['database'];
}
}
return $result;
}
$results = array_filter( search_array( $array, '_wp') );
foreach( $results as $key=> $value ) {
$results[$key] = str_replace( $wp_db_prefix . "wp","", $value);
};
$wp_next_db_name = max($results) + 1;
Here is what it does.这就是它的作用。
It searches a multi-dimensional array which MYSQL DB info for the "_wp" string within the values.它在 MYSQL DB 信息的多维数组中搜索值中的“_wp”字符串。
Then it filters out the user account prefix "oneclick_" with prefix "wp" which leaves me with integers.然后它过滤掉带有前缀“wp”的用户帐户前缀“oneclick_”,这给我留下了整数。
Then I find the highest value (max) and increment by 1.然后我找到最大值(最大值)并增加 1。
The purpose is for a cPanel plugin to create incremental DB names.目的是让 cPanel 插件创建增量数据库名称。
If you only want to look at the values in the database
elements of your array, you can use array_column
to extract them, and then array_map
to iterate over those values, capturing the integer part if they begin with oneclick_wp
, finally feeding those results into max
to get the maximum value and adding 1:如果您只想查看数组的
database
元素中的值,可以使用array_column
提取它们,然后使用array_map
迭代这些值,捕获 integer 部分(如果它们以oneclick_wp
开头),最后将这些结果输入max
得到最大值并加1:
$wp_db_prefix = 'oneclick';
$max = max(array_map(function ($v) use ($wp_db_prefix) {
return (int)str_replace("{$wp_db_prefix}_wp", '', $v);
},
array_column($array, 'database'))) + 1;
echo $max;
Output Output
15
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.