我有一个快速的问题.我有一个存储类实例的2D数组.基于先前在程序中读取的文本文件,为数组的元素分配特定的类.由于我不知道没有在文件中查找哪个类存储在特定元素中,我可以引用该索引中不存在的字段(指的是当temp的实例存储在该索引中时的外观).我已经想出了一种测试方法,但它很长,需要第二个矩阵.是否有一个函数来测试类中字段的存在?
class temp():
name = "default"
class temp1():
appearance = "@"
Run Code Online (Sandbox Code Playgroud) 我知道答案中至少有10个相同的问题,但它们似乎都没有完美地为我工作.我正在尝试检查内部或外部图像是否存在(图像URL是否有效?).
fopen($url, 'r')
失败,除非我使用@fopen()
:
Warning: fopen(http://example.com/img.jpg) [function.fopen]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in file.php on line 21
Run Code Online (Sandbox Code Playgroud)getimagesize($img)
当图像不存在时失败(PHP 5.3.8):
Warning: getimagesize() [function.getimagesize]: php_network_getaddresses: getaddrinfo failed
Run Code Online (Sandbox Code Playgroud)fileExists()
失败,因为它不能与外部URL一起使用,也无法检查我们是否正在处理图像.对这种问题最常见的答案有四种方法是错误的.这样做的正确方法是什么?
我有一个PHP库 https://github.com/tedivm/Fetch,它使用Fetch命名空间,我想在我的脚本中检查它的存在.
我的脚本代码:
// Load Fetch
spl_autoload_register(function ($class) {
$file = __DIR__ . '/vendor/' . strtr($class, '\\', '/') . '.php';
if (file_exists($file)) {
require $file;
return true;
}
});
if (!class_exists('\\Fetch')) {
exit('Failed to load the library: Fetch');
}
$mail = new \Fetch\Server($server, $port);
Run Code Online (Sandbox Code Playgroud)
但始终显示此消息.但图书馆正在全力以赴.
在此先感谢您的帮助!
如何使用CreateCriteria编写以下SQL:
SELECT * FROM FooBar fb
WHERE EXISTS (SELECT FooBarId FROM Baz b WHERE b.FooBarId = fb.Id)
Run Code Online (Sandbox Code Playgroud) 我有两个表tabData和tabDataDetail.我想要来自Parent-Table(tabData)的所有idData(PK)只有 Child-Table中的行(tabDataDetail,FK是fiData):
任何其他组合无效.怎么弄他们?
我没有成功的尝试(慢,并给我也只有 fiActioncode 34的行):
alt text http://www.bilder-hochladen.net/files/4709-l0.jpg
谢谢你的时间.
编辑:感谢所有人的回答.现在我很遗憾没有足够的时间来检查哪一个是最好的还是有效的.我将第一个工作标记为答案.
EDIT2:我认为明确的答案确实是最有效和最紧凑的解决方案.
编辑3:Codesleuth的答案很有趣,因为它只返回行而不是只有一个fiActionCode = 11.很难看到,因为它的唯一真正的20个tabDataDetail-rows总共41524189行有两个.无论如何,这不是我所要求的100%,而是我正在寻找的东西.
在将模板包含在Django模板中之前是否存在开箱即用的检查模板是否存在的方法?也欢迎替代品,但由于特殊情况,其中一些不起作用.
例如,这是一个稍微不同的问题的答案.这不是我要找的: 如何检查Django中是否存在模板?
这是一个可读性问题.性能没有区别.
旧版本的SQL Server足以查找元数据,但不再是.
SELECT foo FROM bar WHERE EXISTS (SELECT * FROM baz WHERE baz.id = bar.id);
SELECT foo FROM bar WHERE EXISTS (SELECT 1 FROM baz WHERE baz.id = bar.id);
Run Code Online (Sandbox Code Playgroud)
我不是在考虑对我来说似乎不直观的NULL或"有趣变体".
SELECT foo FROM bar WHERE EXISTS (SELECT NULL FROM baz WHERE baz.id = bar.id);
SELECT foo FROM bar WHERE EXISTS (SELECT 1/0 FROM baz WHERE baz.id = bar.id);
刚刚在评论中提出了这个问题.我研究了最流行的RDBMS的手册:
SELECT *
在手册中受到青睐.SELECT 1
.SELECT * …
我想知道我是否可以在列中使用EXISTS(或类似的东西),如下所示:
SELECT Column1,
Column2,
EXISTS (SELECT 1 FROM Table2 T2 WHERE T2.Column = T1.Column) AS IsFlag
FROM Table1
Run Code Online (Sandbox Code Playgroud)
我知道我可以用Count()做类似的事情
SELECT Column1,
Column2,
(SELECT Count(*) FROM Table2 T2 WHERE T2.Column = T1.Column) AS IsFlag
FROM Table1
Run Code Online (Sandbox Code Playgroud)
但是当Table2很大时,这可能不是很有效
假设我有一个存储在这样的变量中的查询(它实际上是动态填充的,而且更复杂,但这是出于演示目的):
DECLARE @Query VARCHAR(1000) = 'SELECT * FROM dbo.MyTable'
Run Code Online (Sandbox Code Playgroud)
有没有办法检查查询是否会返回任何结果?像这样的东西,但这不起作用:
IF EXISTS (@Query)
BEGIN
-- do something
END
Run Code Online (Sandbox Code Playgroud)
我能想到的唯一方法是将结果放在临时表中,然后从中查询,但这并不理想,因为动态查询中的列可能会有所不同,我真的不需要临时表除了检查是否会返回某些行之外的任何原因.有没有更好的办法?
我有这个simplexml结果对象:
object(SimpleXMLElement)#207 (2) {
["@attributes"]=>
array(1) {
["version"]=>
string(1) "1"
}
["weather"]=>
object(SimpleXMLElement)#206 (2) {
["@attributes"]=>
array(1) {
["section"]=>
string(1) "0"
}
["problem_cause"]=>
object(SimpleXMLElement)#94 (1) {
["@attributes"]=>
array(1) {
["data"]=>
string(0) ""
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我需要检查节点"problem_cause"是否存在.即使它是空的,结果也是错误的.在php手册上,我找到了我为我的需求修改的PHP代码:
function xml_child_exists($xml, $childpath)
{
$result = $xml->xpath($childpath);
if (count($result)) {
return true;
} else {
return false;
}
}
if(xml_child_exists($xml, 'THE_PATH')) //error
{
return false;
}
return $xml;
Run Code Online (Sandbox Code Playgroud)
我不知道用什么代替xpath查询'THE_PATH'来检查节点是否存在.或者将simplexml对象转换为dom更好吗?