プロが教えるわが家の防犯対策術!

$a_array=array(
array('a', 1, 'aです'),
array('b', 2, 'bです'),
array('c', 3, 'cです'),
);

上記の様な$a_arrayとします。
高校数学で下記の様なものがありますよね。
y=f(x)
f(x)=2x+1

ここでダイレクトに
$my_array=f('b'); //array('b', 2, 'bです')のこと
の様なことをする方法あるでしょうか?

私は方法が分からないので一々foreachで探して一致したものを選んでいます。

少し説明が足りない文章だと存じますが、伝わりましたでしょうか?
方法が有るか無いか、有るなら方法を御教示願えないでしょうか?

A 回答 (2件)

#1です


ごめんなさい、大きく勘違いしていました
こういうことですよね?
(実際のところforeachで回しているのと変わりませんが・・・)

<?PHP
$a_array=array(
array('a', 1, 'aです'),
array('b', 2, 'bです'),
array('c', 3, 'cです'),
);
print_r(f($a_array,'b'));

function f($a_array,$val){
$my_array=array();
array_walk($a_array,function($item,$key) use(&$my_array,$val){if($item[0]===$val){$my_array=$item;}});
return $my_array;
}
?>

ただし問題があります。
$a_array=array(
array('a', 1, 'aです'),
array('b', 2, 'bです'),
array('c', 3, 'cです'),
array('b', 4, 'bでした'),
);

のようなときに、合致するデータが複数でてきます。
前述のものですと一番最後に合致したものが表示されます。
なにをどう返したいのかよく仕様を検討した方がよろしいかと
    • good
    • 0
この回答へのお礼

お返事が遅れまして申し訳ありません。
その様な方法があるのですね。ただforeachで回すのと同じと考えると回して得る方が簡単…。

php.netで配列関数を見てから質問させて頂いたのですが目的の関数が無かったのですよね。
と言うか関数以前に実装していて欲しかったというか…

ありがとうございました!

お礼日時:2015/10/06 16:37

>f(x)


いわゆる数学でも関数ですよね?
こういう感じです

<?PHP
$my_array=f('b');
print_r($my_array);
$my_array=f('x');
print_r($my_array);

function f($var)
{
return array($var, 2, $var.'です');
}
?>
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

$a_array=array(
array('a', 1, 'aです'),
array('b', 2, 'bです'),
array('c', 3, 'cです'),
);
ですが、もうちょっと複雑なんです。
>return array($var, 2, $var.'です');
ではうまくいかなくて、それぞれ$a_arrayの中身を参照する必要がある…

array('a', 1, 'aです'),
array('b', 4582, 'bですよー'),
array('c', 384678, 'cだぜい'),

みたいな感じです。それぞれの1個目の'a','b','c'は参照させるためのキーみたいな一意なものです。

方法無いですかね?

お礼日時:2015/10/05 12:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!