При поиске устойчивой, недорогой альтернативы большим мальчикам, LogiXML имеет dashboarding и специальное создание отчетов о платформе.NET. Мы использовали их с конца 2006 года, когда Pentaho только запускался, но я не посмотрел на него в некоторое время.
array_filter не имеет доступа к ключу и, следовательно, не подходит для вашей работы.
Я полагаю, что вы хотите сделать следующее:
$stocks = Array (
"stock0" => 1,
"stockdate0" => '',
"stock1" => 3,
"stockdate1" => 'apple',
"stock2" => 2,
"stockdate2" => ''
);
$stockList = array(); //Your list of "stocks" indexed by the number found at the end of "stock"
foreach ($stocks as $stockKey => $stock)
{
sscanf($stockKey,"stock%d", &stockId); // scan into a formatted string and return values passed by reference
if ($stockId !== false)
$stockList[$stockId] = $stock;
}
Теперь $ stockList выглядит так:
Array (
[0] => 1
[1] => 3
[2] => 2
)
Возможно, вам придется немного повозиться с этим, но я думаю, что это именно то, о чем вы просите.
ОДНАКО, вам действительно следует следовать совету Джеффа Обера, если у вас есть возможность сделать это.
<?php
$foo =
array (
'stock0' => 1,
'stockdate0' => 1,
'stock1' => 3,
'stockdate1' => 2,
);
$keys = array_keys( $foo );
foreach ( $keys as $key ) {
if ( preg_match( '/stock.$/', $key ) ) {
var_dump( $key );
}
}
I'm hoping I interpreted correctly and you wanted 'stock', 1 wildcard character thats not a newline, then end of string.
You should store those as:
Array(
[0] => Array(
stock => 1,
stockdate => ...
),
[1] => Array(
stock => 3,
stockdate => apple
),
...
)
Нормальное рабочее решение: Зеленый для ChronoFish!
$stockList = array(); //Your list of "stocks" indexed by the number found at the end of "stock"
foreach ($stock as $stockKey => $stock)
{
sscanf($stockKey,"message%d", $stockId); // scan into a formatted string and return values passed by reference
if ($stockId !== false) {
$stockList[$stockId] = $stock;
}
$stockList=array_values($stockList); //straightens array keys out
$stockList = array_slice ($stockList, "0", $count); //gets rid of blank value generated at end of array (where $count = the array's orginal length)
print_r ($stockList);