ができるようにするオブジェクト指向のアプローチであります列と検索値を実行時に設定します。クラスとして、再利用可能で、いくらか自己文書化しています。私のミス
<?php
$items = array(
'meta-title' => [
"code" => 'meta-title'
],
'meta-keywords' => [
"code" => 'meta-keywords'
],
);
/**
* Search all records of a recordset style array for a column containing a value
* Capture the row into matches member for later use.
*/
class ColumnSearch {
private $key;
private $search;
public $matches=array();
public function __construct($key, $search){
$this->key = $key;
$this->search = $search;
}
public function search(array $items){
// @todo validate $items is like a recordset
$matches = array_filter($items, array($this, "_filter"), ARRAY_FILTER_USE_BOTH);
$this->matches = $matches;
return count($matches);
}
private function _filter($row, $rowKey){
return ($row[$this->key] == $this->search);
}
}
$search = new ColumnSearch('code', 'meta-title');
$occurances = $search->search($items);
// return value indicates how many were found, in case of multiples...
echo $occurances ." ". PHP_EOL;
// the matched row will be in matches member.
var_dump($search->matches);
// there might be more than 1, not in your example but this is very generic code.
// grab just the keys, then get the current
echo current(array_keys($search->matches)) . PHP_EOL;
echo "New Search for value that doesn't exist.". PHP_EOL;
$newSearch = new ColumnSearch('code', 'title');
$count = $newSearch->search($items);
if(0 == $count){
echo "Nothing found.". PHP_EOL;
}
echo current(array_keys($newSearch->matches));
http://sandbox.onlinephpfunctions.com/code/83b306bfc30ef2a055cf49501bdeb5cb2e5b5ed7
申し訳ありません。上記の私の編集をチェックしてください。ありがとう。 – laukok
あなたは複数のステートメントに分割し、代わりに 'in_array'を使用しますか? 1.すべての列を取得する2. 'in_array'を使って列があるかどうかをチェックする3.' true'なら列名を知る。 – zerkms
どうすればそれで済むでしょうか? – laukok